Java实现浏览器下载功能

2022-06-22 00:00:00 功能 浏览器 下载

1.jsp页面

《Java实现浏览器下载功能》

《Java实现浏览器下载功能》

 

@ResponseBody
@RequestMapping(value= "download")
public String download(HttpServletRequest request,HttpServletResponse response){
   String url = "需要下载的文件路径";
   File fileurl = new File(url);
   //浏览器下载后的文件名称showValue,从url中截取到源文件名称以及,以及文件类型,如board.docx;
   String showValue = board.docx;
   System.out.println(showValue);
   try{
      //根据条件得到文件路径
      System.out.println("===========文件路径==========="+fileurl);
      //将文件读入文件流
      InputStream inStream = new FileInputStream(fileurl);
      //获得浏览器代理信息
      final String userAgent = request.getHeader("USER-AGENT");
      //判断浏览器代理并分别设置响应给浏览器的编码格式
      String finalFileName = null;
      if(StringUtils.contains(userAgent, "MSIE")||StringUtils.contains(userAgent,"Trident")){//IE浏览器
         finalFileName = URLEncoder.encode(showValue,"UTF8");
         System.out.println("IE浏览器");
      }else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器
         finalFileName = new String(showValue.getBytes(), "ISO8859-1");
      }else{
         finalFileName = URLEncoder.encode(showValue,"UTF8");//其他浏览器
      }
      //设置HTTP响应头
      response.reset();//重置 响应头
      response.setContentType("application/x-download");//告知浏览器下载文件,而不是直接打开,浏览器默认为打开
      response.addHeader("Content-Disposition" ,"attachment;filename=\"" +finalFileName+ "\"");//下载文件的名称

      // 循环取出流中的数据
      byte[] b = new byte[1024];
      int len;
      while ((len = inStream.read(b)) > 0){
         response.getOutputStream().write(b, 0, len);
      }
      inStream.close();
      response.getOutputStream().close();
   }catch(Exception e) {
      e.printStackTrace();
   }
   return "";
}
    原文作者:远古007
    原文地址: https://blog.csdn.net/qq_36542090/article/details/82381173
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章