前端下载文件的几种方式

可以使用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)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值