Safari 浏览器未解码内容处置标头中设置的文件名

问题描述 投票:0回答:2

我使用 org.apache.catalina.util.URLEncoder 对文件名进行编码,并在内容处置标头中设置如下:

String encoded = urlEncoder.encode(fileName, StandardCharsets.UTF_8);

response.setHeader("Content-Disposition", "attachment;filename=\""+encodedFileName+"\"");

文件名:ຕົວຢ່າງ.pptx

编码:%E0%BA%95%E0%BA%BB%E0%BA%A7%E0%BA%A2%E0%BB%88%E0%BA%B2%E0%BA%87%pptx

在 Chrome 浏览器中下载时,它会正确解码并下载。但 Safari 不会解码名称,而是以编码格式下载。

此外,从 Safari 浏览器下载时,扩展名会附加到文件名中。 喜欢%E0%BA%95%E0%BA%BB%E0%BA%A7%E0%BA%A2%E0%BB%88%E0%BA%B2%E0%BA%87%2Epptx.pptx

谢谢,提前。

safari urlencode content-disposition
2个回答
1
投票

我尝试添加 UTF-8 并且成功了。

response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''\""+encodedFileName+"\"");

0
投票

因为 URL 编码的文件名不可移植。

所有细节都在 RFC 6266 中;那里描述的格式适用于所有当前的浏览器。

© www.soinside.com 2019 - 2024. All rights reserved.