react项目中,用a链接下载后文件名不能正常显示
百度了下,原因是我们上传到阿里云的时候,后端为了区分每个人上传的文件,会生成随机码作为文件的名字,也就避免了有些文件名相同的情况。

其实在a标签的属性 download中可以指定下载的文件名,但是href属性的地址必须是和前端js非跨域的地址,如果是引用第三方网站,或者是前后端分离的项目,download属性就会失效。如果使用本地相对路径的地址download则会起作用。

<a href="/file/模版.doc" download="模版">点击下载</a>

但是我们可以通过指定responseType来实现指定文件名

handleDownFile = (e, item) => {e.stopPropagation();if (item.url) {const a = document.createElement('a');a.href = item.url;a.target = '_blank';a.download = item.name;const xhr = new XMLHttpRequest();xhr.responseType = 'blob';xhr.onload = function() {a.href = URL.createObjectURL(xhr.response);document.body.appendChild(a);a.click();a.remove();};xhr.open('GET', a.pathname);xhr.send();}}<div onClick={(e) => this.handleDownFile(e, item)}>点击下载
</div>

这样,下载下来的文件就是正常的文件名了

a链接下载文件名乱码相关推荐

  1. php ie 下载 乱码,php ie下载文件名乱码怎么办

    php ie下载文件名乱码的解决办法:1.通过header方法解决乱码:2.通过"function remote_filesize($uri,$user='',$pw='') {...}&q ...

  2. java文件名的编码格式_java下载文件名乱码解决方法详解

    java下载文件名乱码的方法:(推荐:java视频教程) 每个浏览器的编码不一样,火狐采用的是base64.ie和谷歌采用的是url编码: 所以我们在设置响应头的时候Content-Type getS ...

  3. java下载文件名乱码的解决方法

    java下载文件名乱码的解决方法 参考文章: (1)java下载文件名乱码的解决方法 (2)https://www.cnblogs.com/liyabin/p/7891073.html 备忘一下.

  4. 火狐浏览器下载文件名乱码

    ##火狐浏览器下载文件名乱码 response.setHeader("Content-Disposition","attachment;filename*=utf-8'z ...

  5. IE浏览器下载文件名乱码

    解决IE浏览器下载文件名乱码额问题 //下载的文件名为fileNameString fileName = "登录登出日志统计" + DateUtils.yyyyMMddHHmmss ...

  6. java web 下载文件名乱码

    Web开发下载文件功能(代码如下),文件名如果带有中文,经常会出现乱码现象,需要进行编码. String fileName = "测试文件.doc"; try {HttpServl ...

  7. 解决wget下载文件名乱码的一些方法

    在下载用apache或者nginx做的索引目录时,遇到文件名乱码问题.搜索了不少资料,尝试了好几种方案,大家可以结合使用. 一般情况下加上–restrict-file-names=nocontrol参 ...

  8. 开发者日记1-文件下载文件名乱码(所有语言通用下载设置)

    源头 作为一个原Java开发者,在之前所开发的项目中,做文件下载我们有一个方法,就是获取User-agent然后去判断这个user-agent的请求头去依次根据浏览器去转换我们返回时的文件名称 文件下 ...

  9. java ie下载文件名乱码问题_php中强制下载文件的代码(解决了IE下中文文件名乱码问题)...

    中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下. $file_name = urlencode($_RE ...

  10. Java解决下载--文件名乱码

    最近常有人问到下载文件文件名出现乱码问题,今天统一给出解决方案如下 通常都会通过URLEncoder转码的方式来解决,关键代码如下: response.setContentType( "ap ...

最新文章

  1. android:使用Messenger进行进程间通信(一)
  2. JQUERY 阻止a 标签链接
  3. “大院大所”合作对接活动专场推介会侧记
  4. 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”...
  5. 计算机教学辅助在教学中的应用研究,云计算辅助教学在高职计算机教学中的应用研究.doc...
  6. linux中sudo如何读取标准输入作为密码,避免每次都输入密码?
  7. 什么是 MultiRaft ?
  8. POJ 1200 Crazy Search 查找有多少种不同的子串(hash)
  9. django表单提交案例
  10. 我与我的CSDN博客的第一天
  11. 简历 java技能_java软件工程师简历专业技能填写样本
  12. Calibre Umd Plugin (插件)
  13. mysql三表联查sql语句_SQL三表连接查询与集合的并、交、差运算查询
  14. 20 行 Python 代码批量抓取免费高清图片!
  15. 国际多语言版抖音快手脸书LINETIKTOK悬赏平台
  16. DolphinScheduler服务启停
  17. 蛋糕上两只翘着二郎腿的小胖猪可爱极了
  18. 11g-sql plan management
  19. Aliplayer 切换不同格式视频
  20. 华为OD机试真题 C++ 实现【获取最大软件版本号】【2022.11 Q4 新题】

热门文章

  1. 上海地图全图可放大_上海地图下载-上海地图全图高清版大图-地之图下载
  2. 基础线性代数知识点总结与回顾(四):线性空间
  3. laravel 框架中的路由
  4. laravel 框架命令
  5. 老版本xcode下载_iOS秘籍】-下载历史版本App超详细教程
  6. 图像变换中的常用插值方法(含公式推导)
  7. 【软考】专栏导读(软考全面介绍、资格报考建议)
  8. 三相异步电机----电机公式(三)
  9. 图解linux文件系统,linux系统的基本构成和文件系统的结构(配图解)
  10. docker修改容器ip范围