前端下载文件

Blob下载
优点:
下载异常时可控,即异常时可提示
缺点:
只适用较小文件

 /**
  * 保存流文件
  * @param data 流数据
  * @param fileName 文件名
  * @type 将会被放入到blob中的内容(data)的MIME类型
  */
 downloadByBlob(data, fileName, type) {
   let blobObj, adom, url, event;
   if (data) {
   //Blob中第一个参数:由ArrayBuffer, ArrayBufferView, Blob, DOMString 等对象构成的 Array
     blobObj = new Blob([data], {type: type});
     if (window.navigator.msSaveOrOpenBlob) {
       window.navigator.msSaveOrOpenBlob(blobObj, fileName);
     } else {
       adom = document.createElement('a');
       event = document.createEvent('MouseEvents');
       url = this.getObjectURL(blobObj);
       document.body.appendChild(adom);
       adom.style.display = 'none';
       adom.href = url;
       adom.download = fileName;
       adom.target = '_blank';
       event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
       adom.dispatchEvent(event);
       adom.remove();
       //用来释放一个之前已经存在的、通过调用 URL.createObjectURL() 创建的 URL 对象,即进行垃圾清理
       URL.revokeObjectURL(url);
     }
   }
 }

a标签下载
优点:
下载异常情况不可控
缺点:
文件大小任意

<a @click="downloadFile" :href= baseURL>下载</a>

this.baseURL = serviceApi.exportForwardTemp.url + '?token=' + sessionStorage.getItem('token');

通过Form表单下载

downLoadBackupFile() {
	let token = sessionStorage.getItem('token'),
	 url = this.baseUrl = serviceApi.downLoadBackupFile.url + '?token=' + sessionStorage.getItem('token');
	try {
	 let form = document.createElement('form');
	 let input = document.createElement('input');
	 input.type = 'hidden';
	 input.name = 'token';
	 input.value = token;
	 form.appendChild(input);
	 form.style = 'display:none';
	 form.method = 'get';
	 form.action = url;
	 document.body.appendChild(form);
	 form.submit();
	 document.body.removeChild(form);
	} catch (e) {
	 document.body.removeChild(form);
	 this.$toast.error('网络或服务器异常,请稍后重试');
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值