如何将服务器的文件下载到本地

1.什么情况下会要文件下载
浏览器不能够直接解析的文件
2.什么情况下需要在服务器端编写文件下载的代码?
一般情况下,浏览器不能解析的代码需要编写文件下载的代码
因为浏览器的不同,像谷歌浏览器可以直接解析文件,ie浏览器不能直接解析文件,因此我们设置代码不让浏览器解析文件,而是下载文件。
新建一个download.html
如何将服务器的文件下载到本地
文章图片

再新建一个Servlet
***public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//取页面的参数用的,当页面的表单参数通过request里面传过来,就可以通过这个方法取出来
String filename = request.getParameter(“file”);
// 要下载的文件类型 MIME response.setContentType(this.getServletContext().getMimeType(filename));
// 告诉浏览器该文件不是直接进行解析,而是以下载的方式
// 在设置进去response中之前,可以先把filaname中的字符串设置一下编码
filename = URLEncoder.encode(filename, “utf-8”); response.setHeader(“ContentDisposition”,“attachment; filename=”+filename);
// 通过名字来获取到绝对路径
String path = this.getServletContext().getRealPath("/tempfile/"+filename);
// 获取文件的输入流
System.out.println(path);
InputStream is = new FileInputStream(path);
// 获取输出流,通过response对象获取,用于向客户端写入内容
ServletOutputStream out = response.getOutputStream();

int len = 0; byte[] b = new byte[1024]; while((len=is.read(b))!=-1){

// 在读取数据的时候就把数据写出去
out.write(b, 0, len);
}
// 关流
is.close();
out.close();
}***
【如何将服务器的文件下载到本地】在写 这个代码时,出现一点问题,就是中文.txt文件名出现了乱码问题,在网上看了很多博客,看到很多就是用这个方法
filename=new String(filename.getBytes(“iso8859-1”),“utf-8”)
就是将得到的字节用utf-8显示出来,但是没什么用,在谷歌浏览器仍然报乱码
后来在网上看到下面的代码,完美的解决了我的问题
如何将服务器的文件下载到本地
文章图片

就是不用的浏览器针对于解决java下载文件中文文件名乱码问题的方法。

    推荐阅读