当前位置: 首页 > article >正文

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

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>标签,让浏览器自动去处理,反而不会有乱码问题。


http://www.kler.cn/a/583196.html

相关文章:

  • Java高频面试之集合-10
  • 利用axios库的爬虫程序如何使用HTTP
  • 静态路由配置实验相关过程
  • 【Python】06、流程控制语句
  • 深入理解 MySQL 锁:基于 InnoDB 的并发控制解析
  • stm32 蓝桥杯 物联网 独立键盘的使用
  • LeetCode - #227 基于 Swift 实现基本计算器
  • angular 使用webpack-bundle-analyzer分析包
  • 行为模式---策略模式
  • 【Java进阶学习 第七篇】窗体与监听
  • 【数据挖掘】通过心脏病数据案例熟悉数据挖掘的完整过程
  • Python数据分析之数据可视化
  • WorkTool 技术解析:企业微信自动化办公的合规实现方案
  • Flow-matching论文阅读
  • Leetcode 909: 蛇梯棋(Snakes and Ladders)
  • 【项目】负载均衡式在线OJ
  • 5G工业路由器赋能无人码头,港口物流智能化管理
  • Towards Universal Fake Image Detectors that Generalize Across Generative Models
  • 【Spring 事件机制】
  • 《云原生监控体系构建实录:从Prometheus到Grafana的观测革命》