查看文檔:https://help.aliyun.com/document_detail/383950.html
起因:有一個上傳附件及下載附件的功能,支持上傳圖片(png氓癌,jpg)滑凉、視頻统扳、pdf、excel畅姊、word類型
問題:下載圖片以及word類型時咒钟,使用a標(biāo)簽的download都可以直接下載,然而在下載視頻若未、pdf時則會顯示為預(yù)覽朱嘴,而不是直接下載
原本的 pdf 文件 MIME type 為 application/pdf,瀏覽器識別到這個 type 之后會自動在瀏覽器打開粗合,所以說我們在這里修改 type 即可萍嬉。
開始以為是企業(yè)微信的問題,后來多方實驗隙疚、查證后發(fā)現(xiàn)可以通過轉(zhuǎn)換Content-Type='application/octet-stream'【二進(jìn)制流數(shù)據(jù)】壤追,就可以在拿到返回鏈接的時,執(zhí)行下載任務(wù)而非查看預(yù)覽供屉。在new oss里傳入行冰,如?client.put(
? ? ? ? ? ? "exampledir/exampleobject.txt",
? ? ? ? ? ? data
? ? ? ? ? ? {headers}? ? ? ? ? );
如果沒有指定溺蕉,系統(tǒng)默認(rèn)設(shè)置,阿里云設(shè)置的默認(rèn)圖片上傳格式是下載格式
補(bǔ)充知識:
文件下載響應(yīng)頭的設(shè)置:
content-type?指示響應(yīng)內(nèi)容的格式
content-disposition?指示如何處理響應(yīng)內(nèi)容悼做。
一般有兩種方式:
inline:直接在頁面顯示
attchment:以附件形式下載
實現(xiàn)文件下載的設(shè)置
content-type:'application/octet-stream'
content-disposition: ' attachment; filename="example.jpg" '? 注:example.jpg為對應(yīng)的文件名
當(dāng)Content-attachment = `inline; filename=${file.name}`疯特,file.name需要處理,要不上傳為中文名的文件時贿堰,會報錯辙芍,我是直接注釋這行