blob下载文件与原文件大小不同

发布于 2022-09-11 16:35:40 字数 1045 浏览 15 评论 0

用vue作为前端、node.js作为后端开发一个网站,有一个需求是在前端进行文件下载,文件类型包括pdf、word、exe等,文件的储存位置在后端的路径中。

后端代码:

res.download(file_path)

前端代码:

axios.get(url,{responseType:'blob'}).then(function(res){
   if (res.data){
      filename = 'filename';
      var blob = new Blob([res.data],{type:""});
      console.log('sizzze',res.data.length,blob.size);
      
      if (window.navigator.msSaveOrOpenBlob){
        navigator.msSaveOrBlob(blob, filename);
      }else{
        var link = document.createElement('a');
        link.href = window.URL.createObjectURL(blob);
        link.download = filename;
        document.body.appendChild(link);
        var evt = document.createEvent("MouseEvents");
        evt.initEvent("click", false, false);
        link.dispatchEvent(evt);
 
        document.body.removeChild(link);
      }
  })

但是这样下载下来的文件和原始文件的大小是不同的,而且总是比原文件大一些。console.log('sizzze',res.data.length,blob.size)用这句话观察了一下后端传回的数据大小和生成的blob的数据大小,已经不同了。
才疏学浅,实在不懂,请大神们帮忙解答一下,多谢了!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

謸气贵蔟 2022-09-18 16:35:40

responseType写了blob回来的res.data不是就已经是blob了么。。再new一个type丢了?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文