
浏览器保存文件名既可能受URL影响,也可能来自Content-Disposition响应头。包含中文时,可按标准使用filename*编码,并提供适当兼容回退;需要检查实际响应,不能只修改WordPress媒体标题。
区分文件标题与下载名称
附件标题、页面按钮文字、服务器文件名和浏览器保存名可能各不相同。记录用户从哪个入口下载,以及最终响应头是什么。若下载经过CDN或接口,修改媒体库标题通常不会改变远端返回的文件名。
按标准编码非ASCII名称
MDN说明filename*可表达编码信息,常用UTF-8形式承载中文。具体实现应使用可靠框架或库,不手工拼接不可信输入。普通filename可作为兼容回退,但应避免多个互相矛盾或语法错误的同名参数。

约束输入与路径字符
文件名是展示建议,不应允许用户输入成为服务器路径或响应头注入来源。过滤换行及不适合文件名的字符,处理引号和特殊符号时采用正确编码。浏览器可能自行替换非法字符,不能将某一浏览器的容错当作标准行为。
测试真实下载而非只看地址栏
在桌面和手机常用浏览器测试中文、空格及括号样本,检查下载内容仍是预期PDF。确认重定向后头部没有被覆盖,内联预览和附件下载行为符合需求。保留可辨认版本信息,避免每次下载都得到难以区分的名称。
关键区别

媒体标题:后台内容名称;未必决定保存名。
filename*:编码的文件名建议;需遵循响应头语法。
最终响应:浏览器实际收到内容;经过代理后再核对。
怎样确认处理到位
主流目标浏览器保存名可读,文件内容与类型正确,响应头无冲突或注入风险,经过CDN或跳转后行为仍一致。
容易误判的边界
下载显示名称与公开文件地址是两项设置。修复文件名乱码不必随意改变已分享URL,仍要检查不同浏览器对名称的实际处理。
