使用js通过链接下载文件

前端js通过链接下载文件

原文章地址


			axios({
			    method: 'get',
			    url: `http://xxxx.mp4`,
			    // 必须显式指明响应类型是一个Blob对象,这样生成二进制的数据,才能通过window.URL.createObjectURL进行创建成功
			    responseType: 'blob',
			}).then((res) => {
			    if (!res) {
			        return
			    }
			    // 将blob对象转换为域名结合式的url
			    let blobUrl = window.URL.createObjectURL(res.data)
			    let link = document.createElement('a')
			    document.body.appendChild(link)
			    link.style.display = 'none'
			    link.href = blobUrl
			    // 设置a标签的下载属性,设置文件名及格式,后缀名最好让后端在数据格式中返回
			    link.download = 'city-video.mp4'
			    // 自触发click事件
			    link.click()
			    document.body.removeChild(link)
			    window.URL.revokeObjectURL(blobUrl);
			})

如果我们要使用原生xmlHttpRequest,方式也是一样的,只要指定请求返回值类型为blob就可以了

				var url = 'http://xxxx.mp4';
				var xhr = new XMLHttpRequest();
				xhr.responseType = 'blob';	// 只需要将返回值类型设置为blob就可以了
				xhr.open(method, url);
				
				// 请求出错
				xhr.onerror = function(err) {
					console.log(err);
				}
				// 请求结束
				xhr.onloadend = function(msg) {
					console.log(msg);
				}
				xhr.onreadystatechange = function() {
					if (xhr.readyState !== 4) {
						return;
					}
					const status = xhr.status;
					if ((status >= 200 && status < 300) || status === 304) {
							 // 将blob对象转换为域名结合式的url
					    let blobUrl = window.URL.createObjectURL(xhr.response);
					    let link = document.createElement('a')
					    document.body.appendChild(link)
					    link.style.display = 'none'
					    link.href = blobUrl
					    // 设置a标签的下载属性,设置文件名及格式,后缀名最好让后端在数据格式中返回
					    link.download = 'city-video.mp4'
					    // 自触发click事件
					    link.click()
					    document.body.removeChild(link)
					    window.URL.revokeObjectURL(blobUrl);
					} else {
						console.log('请求错误');
					}
				}
				xhr.send(null);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值