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

server/2024/12/23 1:13:01/

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

应该使用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);})

http://www.ppmy.cn/server/152369.html

相关文章

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(关系运算符和逻辑运算符)

在C编程的旅途中,经常会遇到需要根据不同条件执行不同代码的情况。这时,分支结构就显得尤为重要。它就像程序中的“决策点”,让程序能够根据输入、状态或其他条件智能地选择执行路径。这时就需要学习关系表达式与逻辑表达式,有了判…

Altair: 轻松创建交互式数据可视化

Altair: 轻松创建交互式数据可视化 Altair 是一个基于 Vega-Lite 的 Python 数据可视化库,它旨在简化数据可视化的创建过程,尤其适用于统计图表的生成。Altair 强调声明式编码方式,通过简单的语法,用户能够快速创建复杂的交互式图…

使用JavaScript获取商品详情接口:一个实用的指南

引言 在现代电子商务中,获取商品详情是提供个性化购物体验的关键。JavaScript,作为一种广泛使用的编程语言,可以轻松地与各种API进行交互,从而获取商品信息。本文将指导您如何使用JavaScript调用商品详情接口,并处理返…

基于Spring Boot的个人财务系统

一、系统背景与目的 随着全球经济的发展和人们生活水平的提高,个人财务管理变得越来越重要。传统的个人财务软件存在操作复杂、用户体验差、数据不安全等问题,无法满足用户的个性化需求。因此,开发一种基于Spring Boot的个人财务系统&#x…

探秘数据库索引:功能、意义与实例

探秘数据库索引:功能、意义与实例 ​数据库索引就像是一个 “路标” 或者 “地图”。当进行查询操作时,数据库软件首先会查找索引表。索引表中的数据是经过排序的,并且和原表中的数据存在关联(这种关联可以是基于数据行的物理位置…

在uniapp Vue3版本中如何解决webH5网页浏览器跨域的问题

问题复现 uniapp项目在浏览器运行,有可能调用某些接口会出现跨域问题,报错如下图所示: 什么是跨域? 存在跨域问题的原因是因为浏览器的同源策略,也就是说前端无法直接发起跨域请求。同源策略是一个基础的安全策略&a…

【HTML+CSS】深入理解HTML中的<div>标签:布局与样式的基石

目录 标签的基础介绍 基本语法 在布局中的应用 1. 创建页面结构 2. 结合CSS进行样式化 与现代前端框架 在HTML&#xff08;HyperText Markup Language&#xff09;的广阔世界中&#xff0c;<div>标签无疑是最基础且强大的元素之一。它不仅是网页布局的核心构建块&a…

ffmpeg.exe 命令使用

1. 视频分片&#xff1a;裁剪分割视频成小片段&#xff0c; ffmpeg Documentation Seeking – FFmpeg 1.指定持续时间 使用-t命令。前者要比后者快。 ffmpeg -ss [start] -i [input] -t [duration] -c copy [output] ffmpeg -i [input] -ss [start] -t [duration] -c cop…