2 回答

TA貢獻1895條經驗 獲得超3個贊
axios.post('api/downloadMyFile',
data
).then((response) => {
const url = window.URL.createObjectURL(new Blob([response.data]))
const a = document.createElement('a');
a.href = url;
a.download = "test.zip"
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
}).catch((err) => {
}
所以文件test.zip正在下載。但是當我保存后嘗試打開它時,我在 Windows 中收到壓縮 Zip 文件夾錯誤。
另外,我注意到我不需要在行中指定文件的名稱,a.download = "test.zip" 因為網絡服務正在從共享存儲中獲取文件并且它已經有一個名稱。那么在這種情況下,我是否還需要在response對象中包含文件名?類似的東西response.filename,這樣我就可以在下面的行中使用它,而不是手動命名它:
a.download = response.filename

TA貢獻1798條經驗 獲得超3個贊
嘗試這兩行從響應對象中獲取文件名
var filename = response.headers.get("content-disposition");
filename = filename.match(/(?<=")(?:\\.|[^"\\])*(?=")/)[0];
添加回答
舉報