一、後臺下載功能的代碼
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
InputStream inputStream = new FileInputStream(filePath);
OutputStream os = response.getOutputStream();
byte[] b = new byte[1024];
int length;
while ((length = inputStream.read(b)) > 0) {
os.write(b, 0, length);
downloadedLength += b.length;
}
//關閉
二、諸坑
坑一:需要下載文件時,前端不要使用ajax請求,不然的話即便請求成功,也不會下載文件。可以通過form表單提交的方式請求。
這個問題困擾我很久,參考處https://q.cnblogs.com/q/84808/,多謝這位仁兄。
坑二:
fileName,下載的文件名,一定要加後綴,加後綴,加後綴,重要的事說三遍。
如不加後綴,瀏覽器無法識別文件類型,下載到的文件也是沒有後綴的文件。即便在setContentType中設置了內容類型(比如word對應的contentType類型),如果文件名沒有後綴,瀏覽器下載到的依然是沒有後綴的文件。