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、谷歌、火狐。