原因:響應頭設置content-disposition,主要遵循 RFC 5987標准。
response.setHeader("content-disposition","attachment;filename*=UTF-8''" + URLEncoder.encode(fileName,"UTF-8"));
說明:
content-disposition 消息頭
指示回復的內容該以何種形式展示,是以內聯的形式(即網頁或者頁面的一部分),還是以附件的形式下載並保存到本地。
作為消息主體中的消息頭
在HTTP場景中,第一個參數或者是inline
(默認值,表示回復中的消息體會以頁面的一部分或者整個頁面的形式展示),
或者是attachment
(意味着消息體應該被下載到本地;大多數瀏覽器會呈現一個“保存為”的對話框,將filename
的值預填為下載后的文件名,假如它存在的話)。
Content-Disposition: inline Content-Disposition: attachment Content-Disposition: attachment; filename="filename.jpg"
作為multipart body中的消息頭
在HTTP場景中。第一個參數總是固定不變的form-data
;附加的參數不區分大小寫,並且擁有參數值,參數名與參數值用等號(=)連接,參數值用雙引號括起來。參數之間用分號(;)分隔。
Content-Disposition: form-data Content-Disposition: form-data; name="fieldName" Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"
參考文檔:
https://segmentfault.com/q/1010000012860962
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition