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);
        })
相关推荐
颜酱21 小时前
LLM为核,上下文为限:拆解AI Agent生态的底层逻辑
前端·人工智能
前端那点事21 小时前
Vue3 超全复盘!30+前端高频核心知识点(开发+面试全覆盖)
前端·vue.js
幼儿园技术家1 天前
为什么 SSR 一定会有 hydration mismatch?
前端
FlyWIHTSKY1 天前
Vue 3 中 RouteRecord 详解(Vue Router 4)
前端·javascript·vue.js
yingyima1 天前
用 cron 定时发送邮件报告:实战案例详解
前端
GAMC1 天前
从 “凭感觉写代码” 到 “按规范做开发”:OpenSpec 让 AI 编程回归工程化
前端·人工智能
微学AI1 天前
Claude-Code-python 前端改造项目工作流程详解
开发语言·前端·python
清汤饺子1 天前
【译】我的 AI 进阶之路:从怀疑到深度整合
前端·javascript·后端
@菜菜_达1 天前
Vue生命周期
前端·javascript·vue.js
每天吃饭的羊1 天前
UMD和IIfe
开发语言·前端·javascript