Firefox和Chrome在文件名前后附加下划线,而Internet Explorer工作正常



Firefox和Chrome浏览器在文件名前后附加下划线,而Internet Explorer浏览器工作正常。

Firefox和Chrome给出:_Warrant_Amendment_5485_14_March_2014.pdf.pdf_

IE给出:Warrant_Amendment_5485_14_March_2014.pdf.pdf

下面是代码
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline;filename=" + fileName + ".pdf");

我通过从文件名值中删除引号(在我的情况下不是必需的)来解决类似的问题。

我注意到rfc6266说文件名值的引号字符串应该是可以接受的。在这一点上,我还没有进一步调查。

我刚刚遇到了同样的问题,多亏了user650881的回复,我才解决了这个问题。

问题是我有这个:

response.addHeader("Content-Disposition","attachment; filename=" + filename + """);

和工作当我把它改成这样:

response.addHeader("Content-Disposition","attachment; filename="" + filename + """);

注意filename=

后面的"

希望有所帮助

当文件名中存在无效字符时,就会发生这种情况。
c#的路径。gettinvalidfilenamecachars方法列出最多的。

圆括号,大括号和方括号在文件名中可能是合法的(在Windows上),但是带有它们的文件也会被浏览器添加下划线。

我也遇到了同样的问题,我认为user650881的答案是解决方案,但在我的情况下,问题是我从Content-Disposition错误地解析文件名,也就是说,我在文件名(filename.ext")中保留了attachment; filename="filename.ext"字符串中的最后一个引用"字符,下载文件时自动转换为_:

  const link = document.createElement('a');
  link.href = window.URL.createObjectURL(blob);
  // Contains 'filename.ext"' string which is replaced by 'filename.ext_`
  link.download = fileName; 
  document.body.appendChild(link);
  link.click();

最新更新