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();