文件下载
浏览器默认下载文件的方式为inline即能打开就打开,不能打开就下载。
通过给a标签href中的属性值赋值,可以完成对一些浏览器无法解析打开的文件进行下载。但是当要下载的文件浏览器能解析打开,要如何告诉浏览器进行下载此文件呢?

通知客户端浏览器: 这是一个需要下载的文件, 不能再按普通的 html 的方式打开.
| 12
 
 | response.setContentType("application/x-msdownload");
 
 | 
通知客户端浏览器: 不再有浏览器来处理该文件, 而是交由用户自行处理
设置响应流中文件进行下载,attachment以附件形式下载,filename= 表示下载显示的下载文件名。
| 12
 
 | response.setHeader("Content-Disposition", "attachment;filename=abc.txt");
 
 | 


| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 
 | package com.kylin.servlet;
 import org.apache.commons.io.FileUtils;
 
 import javax.servlet.ServletException;
 import javax.servlet.annotation.WebServlet;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.URLEncoder;
 
 @WebServlet("/downloadServlet")
 public class DownloadServlet extends HttpServlet {
 
 @Override
 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
 resp.setContentType("application/x-msdownload");
 
 
 String fileName = "文件下载.txt";
 
 resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));
 OutputStream out = resp.getOutputStream();
 
 File txtFileName = new File("C:\\Data\\IDM\\Java学习\\尚硅谷Java\\3.JavaWeb阶段\\尚硅谷JavaWEB视频教程\\22. 尚硅谷_佟刚_JavaWEB_源代码\\fileUpload\\note.txt");
 
 
 
 
 
 
 
 
 byte[] bytes = FileUtils.readFileToByteArray(txtFileName);
 out.write(bytes);
 out.flush();
 out.close();
 }
 }
 
 |