java实现文件下载

论坛 期权论坛 脚本     
已经匿名di用户   2022-4-13 16:43   1944   0

Java中我们可以通过Servlet类中的response对象实现文件下载。

首先我们实现普通的文件下载:

public class DownLoad extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doPost(request, response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  // 实现文件下载
  response.setHeader("Content-Disposition", "attachment; filename=11.jpg");
  
  String realPath = this.getServletContext().getRealPath("11.jpg");
  InputStream is = new FileInputStream(realPath);
  
  byte[] b = new byte[1024];
  int len = 0;
  while((len = is.read(b)) != -1){
   response.getOutputStream().write(b, 0, len);
  }
  
  is.close();
 }

}

上面就可以实现Java文件下载功能。

那么我们怎么实现中文名称的文件下载呢?

可根据如下实例实现:

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  // 实现文件下载
  String encode = null;
  encode = new String("小毛驴.jpeg".getBytes("UTF-8"),"iso-8859-1");
  
  
  
  
  response.setHeader("Content-Disposition", "attachment; filename="+ encode);
  
  String realPath = this.getServletContext().getRealPath("小毛驴.jpeg");
  InputStream is = new FileInputStream(realPath);
  
  byte[] b = new byte[1024];
  int len = 0;
  while((len = is.read(b)) != -1){
   response.getOutputStream().write(b, 0, len);
  }
  
  is.close();
 }




这样就可以实现中文文件名称的下载了,并且适用于IE、谷歌、火狐。



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP