一.a標簽完成 二.js實現下載 三.js中ajax實現音頻或者視頻不跳轉進行文件下載 寫代碼的思路 四.fetch實現 ...
一.a標簽完成
<a href="文件鏈接" download='下載文件名'></a>
<--!但是其中的download對應音頻文件和視頻文件無效-->
二.js實現下載
<script>
const a = document.createElement('a');
a.setAttribute('href', '文件鏈接'); //a.href='文件鏈接'
a.setAttribute('download', '文件名'); //a.download='文件名'
a.click();
</script>
三.js中ajax實現音頻或者視頻不跳轉進行文件下載
寫代碼的思路
先請求音頻的鏈接,再把返回值轉換成二進位,再根據他二進位對象生成新鏈接,再創建a標簽,點擊a標簽
//這是vue裡面的寫的普通頁面也差不多
<script>
this.$axios({
method: 'get',
url: row.src,
responseType: 'blob' //這個不能少,讓response二進位形式,如果你按照網上教程不設置這個將返回值進行BLOB([])進行處理可能會出現解析錯誤
}).then(response => {
const href = URL.createObjectURL(response.data); //根據二進位對象創造新的鏈接
const a = document.createElement('a');
a.setAttribute('href', href);
a.setAttribute('download', row.title);
a.click();
URL.revokeObjectURL(href);
}
</script>
四.fetch實現
//原理和ajax一模一樣
function request() {
fetch('<介面地址>', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: '<請求參數:json字元串>',
})
.then(res => res.blob())
.then(data => {
let blobUrl = window.URL.createObjectURL(data);
download(blobUrl);
});
}
function download(blobUrl) {
const a = document.createElement('a');
a.download = '<文件名>';
a.href = blobUrl;
a.click();
}
request();