ios的safari下载文件 文件名乱码

当使用nginx代理文件并下载文件时,返回的协议头Content-Dispositionfilename=%E9%9B%AA%E5%B1%B1.jpg中文内容会是URL编码的形式,当客户端在safari浏览器下载下载文件时,文件名不会转换(URL解码)为正常的中文。

应该使用js进行下载,即可解决问题。

js 复制代码
       axios({
          method: 'get',
          url: 'http://xxxxxxxx.com/files/年终总结模板.docx',
          responseType: 'blob'
        }).then((response) => {
          const contentDisposition = response.headers['content-disposition'];
          let fileName = ''; // 如果没获取到文件名,设置默认文件名
          if (contentDisposition) {
            const matches = contentDisposition.match(/filename="?([^"]+)"?/);
            if (matches && matches.length > 1) {
              fileName = matches[1];
            }
          }
          const blob = new Blob([response.data], { type: response.headers['content-type'] });
          const link = document.createElement('a');
          link.href = URL.createObjectURL(blob);
          link.download = decodeURIComponent(fileName);
          document.body.appendChild(link);
          link.click();
          document.body.removeChild(link);
          URL.recycleObjectURL(link.href);
        })
相关推荐
云飞云共享云桌面6 分钟前
SolidWorks对电脑的硬件配置要求具体有哪些
java·服务器·前端·网络·数据库
鹏程十八少11 分钟前
11. Android <卡顿十一>深入ASM与Transform进行插桩,手写微信Matrix插件,打造自己的Matrix工具(卡顿进阶)
前端
小桥风满袖13 分钟前
极简三分钟ES6 - 箭头函数
前端·javascript
bug_kada17 分钟前
前端后端3步联调:Cookie认证实战,让登录功能完美上线!
前端·javascript
stringwu18 分钟前
Flutter开发者必备:状态管理Bloc的实用详解
前端·flutter
青晚舟18 分钟前
作为前端你必须要会的CICD
前端·ci/cd
hj5914_前端新手19 分钟前
深入分析 —— JavaScript 深拷贝
前端·javascript
中微子19 分钟前
虚拟列表完全指南:从零到一手写实现
前端
jqq66619 分钟前
解析ElementPlus打包源码(二、buildFullBundle)
前端·javascript·vue.js
YaeZed28 分钟前
TypeScript6(class类)
前端·typescript