下载文件,文件名乱码问题

C# .net framework 4.8 mvc 项目,做一个文件下载功能。

原项目是前端使用razor引擎方式做页面渲染的。

该项目原来就有一个模块是可供文件下载的,且文件名是中文。

但是我现在新增的这个模块,领导要求用js写,觉得razor太笨重。

后端有一个通用的DownloadHelper帮助类。

这个帮助类里已经封装过了设置Encode和请求头等信息。

使用原模块下载时,一切正常。

使用新模块下载时,当文件名是中文时,文件名是%e4%b8这种。

经过两天的调查,原模块与新模块对比测试,才发现原来是前端的问题。

核心代码:

// 提取文件名并去除引号
var encodedFileName = matches[1].replace(/['"]/g, '');
// 对文件名进行解码
var decodedFileName = decodeURIComponent(encodedFileName);

其实我这里前端封装的方法也是有问题的,

前端使用了AJAX获取文件流并手动生成下载链接,Blob+Url.createObjectURL,反而会丢失原始响应头中的Content-Disposition。

如果直接使用<a>标签,让浏览器自动去处理,反而不会有乱码问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值