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);
        })
相关推荐
zzzsde7 分钟前
【C++】深入理解string类(5)
java·前端·算法
袁煦丞10 分钟前
随机菜谱解救选择困难!YunYouJun/cook 成为你的厨房锦囊:cpolar内网穿透实验室第549个成功挑战
前端·程序员·远程工作
携欢18 分钟前
PortSwigger靶场之CSRF where token is tied to non-session cookie通关秘籍
运维·服务器·前端
我是华为OD~HR~栗栗呀30 分钟前
华为OD-21届考研-Java面经
java·前端·c++·python·华为od·华为·面试
詩句☾⋆᭄南笙31 分钟前
CSS美化网页元素
前端·css·html
陈随易31 分钟前
不使用 Husky 和 Lint-staged,实现 Git 提交前自动格式化代码
前端·后端·程序员
范特东南西北风33 分钟前
roocode + vscode + api_key = free GPT-5
前端·ai编程
golang学习记34 分钟前
从0死磕全栈之Next.js 缓存与数据重新验证
前端
BraveAriesZyc34 分钟前
axios的使用
前端
没有鸡汤吃不下饭35 分钟前
H5移动端页面实现快递单号条形码/二维码扫描,亲测可行!!
前端·javascript·vue.js