【vue】vue中下载文件的方法

1. 下载后端返回文件

1.1 后端为post请求返回二进制流文件

Blob

Blob对象标识一个不可变、原始数据的类文件对象。Blob表示的不一定是JavaScript原生格式的数据

responseType

responseType它表示服务器响应的数据类型,由于后台返回来的是二进制数据,所以要把它设为‘blob’

通过设置responseType为blob,可以直接拿到二进制文件转化为Blob,两种使用 Blob 实现文件下载的方式

URL.createObjectURL

在浏览器端,实现直接下载文件,就是使用a标签来只想文件的下载地址。window.location.href的本质也是这样,因此在拿到二进制文件对应的Blob对象后,需要为这个Blob对象创建一个指向它的下载地址的URL

URL.createObjectURL 方法则可以实现接收 File 或 Blob 对象,创建一个 DOMString,包含了对应的 URL,指向 Blob 或 File 对象,它看起来会是这样:

“blob:http://localhost:8080/a48aa254-866e-4c66-ba79-ae71cf5c1cb3”

完整使用:

export const downloadFile = (fileStream, name, extension, type = "") => {
  const blob = new Blob([fileStream], {type});
  const fileName = `${name}.${extension}`;
  if ("download" in document.createElement("a")) {
    const elink = document.createElement("a");
    elink.download = fileName;
    elink.style.display = "none";
    elink.href = URL.createObjectURL(blob);
    document.body.appendChild(elink);
    elink.click();
    URL.revokeObjectURL(elink.href);
    document.body.removeChild(elink);
  } else {
    navigator.msSaveBlob(blob, fileName);
  }
};
FileReader

FileReader 对象也可以使得我们对 Blob 对象生成一个下载地址 URL,它和 URL.createObject 一样可以接收 File 或 Blob 对象。
这个过程,主要由两个函数完成readAsDataURLonload,前者用于将Blob或File对象转为对应的URL,后者用于接收前者完成后的URL,它会在e.target.result
完整使用:

const readBlob2Url  =  (blob, type) =>{
  return new Promise(resolve => {
    const reader = new FileReader()
    reader.onload = (e) => {
      resolve(e.target.result)
    }
    reader.readAsDataURL(blob)
  })
}

1.2 后端直接返回get请求文件

<a href=‘get请求返回的地址’></a>

2. 下载本地文件

前端项目中下载某个地址的文件模块,文件不想放到后端去下载,在文件大小不太大的情况下,可以把文件放在前端项目中,无论开发环境还是生产环境,都能在同样路径下找到那个文件
1.在vue-cli3.x的版本中,将需要下载的文件放到public文件夹中
在这里插入图片描述
2.下载文件

<script>
downloadUrl: `${process.env.BASE_URL}file/xxx_template.xlsx`, // 模板下载文件地址
</script>
<template>
<a :href="downloadUrl">点击下载</a>
</template>

参考:
详解,从后端导出文件到前端(Blob)下载过程

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows Mobile系统,Wince exe程序的打开与文显示问题是一个常见的技术难题。由于Windows Mobile的语言环境默认是英语,当我们打开Wince exe程序时,程序可能会出现文显示不全或者乱码等问题。这时我们需要采用一些特殊的方式来解决这个问题。 解决该问题的方法有三种:一是修改注册表;二是更改系统语言;三是安装文支持。 首先,我们可以通过修改注册表来解决该问题。找到注册表路径“HKEY_CURRENT_USER\ControlPanel\International”,修改为“0x0804e4b0”,并重启手机即可。此方法能够有效地解决Wince exe程序的文显示问题,但不够稳定。 第二种方法是更改系统语言。由于Windows Mobile系统默认是英语,我们可以通过更改系统语言为文来解决该问题。更改系统语言的方法为:依次进入“Settings”→“System”→“Regional Settings”→“Language”,选择文即可。但是此方法可能会导致系统不稳定。 第三种方法是安装文支持。我们可以安装文支持包,以解决Wince exe程序的文显示问题。方法为:将文支持包拷贝到手机存储卡根目录,再运行“setup.exe”文件进行安装即可。 总之,解决Wince exe程序的文显示问题需要我们采用一些特殊的技术方法,具体的解决方法根据不同的情况而异。我们需要在实践不断摸索,才能弄清Wince exe程序的文显示问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值