方法一:使用Blob对象Blob对象表示一个不可变的、原始数据文件类对象。Blob不一定代表JavaScript原生格式的数据。File接口基于Blob,继承了blob的功能并对其进行了扩展以支持用户系统上的文件。Blob()构造函数语法varblob=newBlob(array,options);参数数组是由ArrayBuffer、ArrayBufferView、Blob、DOMString等对象组成的Array,或者其他类似对象的混合体,将被放入Blob中。DOMStrings将被编码为UTF-8。options是可选的,它可以指定以下两个属性:type,默认值为“”,表示将放入blob的数组内容的MIME类型。也就是设置文件类型。endings,默认值为“transparent”,用于指定包含行终止符n的字符串如何书写。它是两个值之一:“native”,这意味着行尾将更改为适合主机操作系统文件系统的换行符,或“transparent”,这意味着将保留blob中保存的结束字符不变。URL对象使用window.URL.createObjectURL()创建URL对象letdata='yourdata'letblob=newBlob(data)letobjURL=window.URL.createObjectURL(blob)新的URL对象优化以获得最佳性能,可以使用window.URL.revokeObjectURL(objURL)主动释放内存。当然,浏览器文档退出时会自动释放。使用标签自定义下载constname='downloadname'constsuffix='pbf'//后缀,文件类型constaLink=document.createElement('a')aLink.href=urlaLink.download=`${name}.${suffix}`aLink.click()download设置文件名时,可以直接设置扩展名。如果没有,浏览器一般会自动检测一般会自动检测$\color{为什么red}{asdasda}$color不生效?Example//将json转换为pbf并下载jsonToPBF(){//this.jsonDataObj是json数据constbuffer=geobuf.encode(this.jsonDataObj,newPbf())//console.log(buffer)constblob=newBlob([buffer])this.openDownloadDialog(blob,'jsonToPbf')},openDownloadDialog(url,saveName){if(typeofurl==='object'&&urlinstanceofBlob){url=URL.createObjectURL(url)复制代码console.log('Blob',url)}constaLink=document.createElement('a')aLink.href=urlaLink.download=`${saveName}.pbf`||`Download.pbf`//这里偷懒了,我用的是点击模拟,应该用类似下面的方法aLink.click()//下载文件URL.revokeObjectURL(url)//主动释放内存//varevent//if(window.MouseEvent){//event=newMouseEvent()//}else{//event=document.createEvent('MouseEvents')//event.initMouseEvent('点击',true,false,window,0,0,0,0,0,false,false,false,false,false,0,null)//}//aLink.dispatchEvent(event)}方法二:使用js-file-download安装npminstalljs-file-download--save使用importfileDownloadfrom'js-filr-download'axios.get(url,params,{responseType:'arraryBuffer'}).then(res=>{fileDownload(res.data,'xxx.pbf')})