reactjs 你好,在Firefox(最新版)上使用React / Redux应用程序时,我尝试下载文件名中包含多个空格的文件,它们变成了单个空格

4nkexdtk  于 2023-03-22  发布在  React
关注(0)|答案(1)|浏览(84)

我知道这个问题有几个版本,但我已经尝试了尽可能多的建议,但它似乎不起作用。大多数建议设置Content-Disposition头项。从JS前端,我使用

Content-Disposition: attachment; filename=*"Dbase%20%20%20Emails%20-%20Copy.xlsx"; 
    filename="Dbase%20%20%20Emails%20-%20Copy.xlsx"
<or>
Content-Disposition: attachment; filename=*UTF-8''Dbase%20%20%20Emails%20-%20Copy.xlsx
<or>
encodeURI("Dbase   Emails - Copy.xlsx")
<or>
filename="Dbase   Emails - Copy.xlsx"

或者我试着在响应头上设置它,一个golang后端,几乎相同的形式,但Firefox继续忽略头中传递的任何内容,你可以在devtools的“文件”下看到一个解码:“Dbase电子邮件- Copy.xlsx”,在响应头中,您可以正确地看到:

attachment; filename=*"Dbase%20%20%20Emails%20-%20Copy.xlsx"; 
    filename="Dbase%20%20%20Emails%20-%20Copy.xlsx"

这似乎是正确的,我可以做些什么,使Firefox下载它作为正确的名称?
谢谢-凯文
我已经尝试了所有我可以尝试从以前的问题,如:
How to encode the filename parameter of Content-Disposition header in HTTP?

6yt4nkrj

6yt4nkrj1#

对于当前的Firefox(版本111.0.1),破解Content-Disposition头文件根本没有帮助。因为Firefox会清理文件名并压缩空白。
我不知道你为什么要保留空白,但请注意,filename参数提供了大多数指示性信息,所有浏览器都会清理文件名。例如,Linux上的Chrome会将文件名中的/替换为_
filename=*UTF-8应该是filename*=UTF-8
参考文献:
1.调用DownloadPaths.sanitize的Firefox源代码:https://hg.mozilla.org/mozilla-central/file/bce007ba1a3fdb155321a15a3430395dddbccb4a/toolkit/mozapps/downloads/HelperAppDlg.jsm#l428
注意:源代码不是针对当前版本的。但是行为是相同的。
1.关于压缩空白的一些讨论:https://bugzilla.mozilla.org/show_bug.cgi?id=1637973

  1. Content-Disposition头文件:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

相关问题