可以使用a的download属性进行下载
//ps:并不推荐这种方式,因为太不直接了
fetch(`url`,{method:'get'}).then(res=>res.blob().then(blob=>{
let url = window.URL.createObjectURL(blob)
let a = document.createElement('a')
a.style.display = 'none'
a.href=url
a.download='filename'
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
window.URL.revokeObjectURL(url)
}))
浏览器触发下载的条件
浏览器直接访问一个请求,如果相应的Content-Type类型(检索MIME)为浏览器无法识别的类型,一般都会触发下载。浏览器可以识别的类型有限,比如text/html,,text/css,text/*,application/javascript,image/png,image/jpeg,video/mp4,appkication/pdf等等
所以如果我们的下载路径是get请求,就可以直接使用a标签的href属性,进行下载
<a href='url'></a>
get请求如果是流文件的形式,也可以使用window.open()进行下载
windown.open('url')
如果请求路径是post请求,可以使用form.submit实现
let params = {// 参数
key1:value1,
key2:value2,
key3:value3,
};
let form = document.createElement('form')
form.enctype = 'application/x-www-form-urlencoded'
document.body.appendChild (form)
for (let key in params) {
let input = document.createElement('input')
input.type='hidden'
input.name = key;
input.value = params[key]
form.appendChild(input)
}
form.method = "POST"
form.action = `url`//请求路径
form.submit();
document.body.removeChild(form)
5701





