文件下载(基于URL)

public void download_file(String fileName, HttpServletRequest request,String filePath,
            HttpServletResponse response) {
     try {
         URL url = new URL(filePath);    
         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)");  
         conn.setRequestMethod("GET");
         conn.connect();
         //得到输入流  
         InputStream inputStream = conn.getInputStream();    
         //获取自己数组  
         byte[] buffer = new byte[2048];
         //设置content-disposition响应头控制浏览器弹出保存框,若没有此句则浏览器会直接打开并显示文件。中文名要经过URLEncoder.encode编码,否则虽然客户端能下载但显示的名字是乱码
         response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
         int len = 0;
         // 通过response对象获取OutputStream流
         OutputStream out = response.getOutputStream();
         // 将InputStream流写入到buffer缓冲区
         while ((len = inputStream.read(buffer)) > 0) {
             //使用OutputStream将缓冲区的数据输出到客户端浏览器
             out.write(buffer, 0, len);
         }
         inputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    }

猜你喜欢

转载自blog.csdn.net/xjiuge/article/details/77573636