spring Firefox和Chrome在Internet Explorer正常工作时在文件名前后追加下划线

pkwftd7m  于 2023-01-24  发布在  Spring
关注(0)|答案(4)|浏览(107)

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\");
mzaanser

mzaanser1#

我通过删除文件名值中的引号(在我的例子中不需要)解决了类似的问题。
我注意到rfc6266说文件名值的引号字符串应该是可以接受的,在这一点上我没有进一步研究。

laik7k3q

laik7k3q2#

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

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

当我把它改成这样的时候,它就工作了:

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

注意文件名=后的"”
希望能有所帮助

yptwkmov

yptwkmov3#

当存在对文件名无效的字符时,会发生这种情况。
C#的Path.GetInvalidFileNameChars method列出的最多。
圆括号、花括号和方括号在文件名中可能是法律的的(在Windows上是合法的),但是带有它们的文件也会得到浏览器添加的下划线。

jchrr9hc

jchrr9hc4#

我遇到了同样的问题,我认为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();

相关问题