java,無法下載的三兩原因

一、後臺下載功能的代碼

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類型),如果文件名沒有後綴,瀏覽器下載到的依然是沒有後綴的文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章