您的位置:首页 > 编程语言 > Java开发

java实现文件下载功能,自动弹出保存窗口

2015-10-30 16:03 841 查看
@RequestMapping(value="downLoadFromUrl")

    public void  downLoadFromUrl(HttpServletRequest request,HttpServletResponse response,String downloadUrl,String ip,String longitude,String latitude) throws IOException{  

        URL url = new URL(downloadUrl);    

        HttpURLConnection conn = (HttpURLConnection)url.openConnection();    

                //设置超时间为3秒  

        conn.setConnectTimeout(3*1000);  

        //防止屏蔽程序抓取而返回403错误  

        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");  

        //得到输入流  

        InputStream inputStream = conn.getInputStream(); 

        try {

            String fileName = "aaa.jpg";

            fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");

            response.setContentType("application/octet-stream");

            response.addHeader("Content-Disposition", "attachment;filename="+fileName);

            String len = String.valueOf(inputStream.available()/1000+"k");

            response.setHeader("Content-Length", len);

            OutputStream out = response.getOutputStream();

            byte[] getData = readInputStream(inputStream);      

            out.write(getData);

            inputStream.close();

            out.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

        

    

    /**

     * 从输入流中获取字节数组

     * @param inputStream

     * @return

     * @throws IOException

     */  

    public static  byte[] readInputStream(InputStream inputStream) throws IOException {    

        byte[] buffer = new byte[1024];    

        int len = 0;    

        ByteArrayOutputStream bos = new ByteArrayOutputStream();    

        while((len = inputStream.read(buffer)) != -1) {    

            bos.write(buffer, 0, len);    

        }    

        bos.close();    

        return bos.toByteArray();    

    } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: