首页 > 其他分享 >解决二进制文件下载乱码问题

解决二进制文件下载乱码问题

时间:2022-12-28 18:01:02浏览次数:36  
标签:二进制 乱码 href blob var data 下载

好久没写博客了,突然想记录点什么。

前段时间遇到一个问题,记录一下,以后遇到可以找到解决方案。

事情的原由是这样的,后端返回一个二进制的csv文件让前端进行下载,前端采用axios,responseType为blob进行下载,看到这里,其实整个文件就已经下载完成了,以为万事大吉,其实不然。

打开文件一看,居然有乱码,这就让我摸不着头脑了。

贴一下伪代码:

 1 axios.request({ data: data, method: 'POST', url: url, responseType: 'blob'}).then(res => {
 2     var data = res.data
 3     var blob = new Blob([data])
 4     var href = window.URL.createObjectURL(blob)
 5     var a = document.createElement('a')
 6     a.href = href
 7     a.setAttribute('download', 'xxx.csv')
 8     a.click()
 9     window.URL.revokeObjectURL(href)
10 })

下载代码其实没上面问题,就是不知道为什么下载下来中文会是乱码。

其实解决办法也很简单,在网上找到的,那就是在使用blob读取内容时,需要加上'\ufeff',使文件以utf-8的编码模式,同时解决中文乱码问题。

就是这么神奇,贴一下修改之后的代码:

axios.request({ data: data, method: 'POST', url: url, responseType: 'blob'}).then(res => {
     var data = res.data
     var blob = new Blob(['\ufeff', data])
     var href = window.URL.createObjectURL(blob)
     var a = document.createElement('a')
     a.href = href
     a.setAttribute('download', 'xxx.csv')
     a.click()
     window.URL.revokeObjectURL(href)
 })

好了,以上就是本次问题的解决方案,我想,以后凡是涉及到文件下载的,都可以采用这个方法以确保下载文件的正确性吧。

标签:二进制,乱码,href,blob,var,data,下载
From: https://www.cnblogs.com/xuejiangjun/p/17010917.html

相关文章

  • Python 通过关键词下载百度图片
    打开百度图片后,输入相关关键词,根据分析,发现百度图片初始只会渲染部分图像到页面上,随着滚轮下滚,就会请求新的数据,因此我们可以判断页面是经过ajax请求数据后,渲染至页面。百度......
  • Python 解析西瓜视频 | 无水印高清下载
    很多小伙伴都有使用西瓜视频,现在西瓜视频作为字节旗下的全家桶一员,拥有很多优质的视频,是很多自媒体小伙伴需要的。但是如何无水印下载这些西瓜视频呢?却让很多人为难,缺少这个......
  • Python批量下载公众号话题下音频文件
    宝宝喜欢听父母讲故事,年轻人喜欢听文章,年纪大的人喜欢听评书,很多人喜欢听不一样的东西,文案能够从文字转化成为语言说出去,那么效果肯定是大有不同。想必在日常生活中,大家都可......
  • Python 多进程下载站点所有小说
    小说,宅男必备,也是当今社会人们打发时间的一种方式。今天给大家分享的,喜欢看小说的同学可以收藏起来了!!目标站点:https://www.zhenhunxiaoshuo.com爬取思路:获取站点分类下的书......
  • python版抖音短视频无水印下载
    如今,各类短视频应用已融入不少人的日常生活。短短几个镜头,可仰望浩瀚星空,也可俯瞰市井烟火;能近距离观察社会肌理,也能深度透视时代景深。点开视频,领略城乡风貌,了解风土人情,足......
  • lxml案例~豆瓣版生日星空图片下载的源码
    有不少小伙伴反应,昨天更新的NASA的源码在运行的时候出错了,出现:其实小编当时也遇到了这个错误,当时去网上搜了下说是可能会和网络有问题,因为网站本身就是个国外的网站,后来增加......
  • 使用Python的asyncio模块异步下载整站壁纸
    这篇文章主要给大家介绍关于Python中asyncio模块的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学......
  • c# 批量大文件上传下载
    ​ 1 背景用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文......
  • fetch下载文件
    let fileName = '';      let options = {        method: "POST", //post请求        headers: {          Accept: "applica......
  • .net 批量大文件上传下载
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag      ......