簡體   English   中英

Firefox 和 Chrome 在文件名前后附加下划線,而 Inte.net Explorer 工作正常

[英]Firefox and Chrome appending underscore before and after file name while Internet Explorer is working fine

Firefox 和 Chrome 在文件名前后附加下划線,而 Inte.net 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# 的Path.GetInvalidFileNameChars 方法列出最多。

圓括號、花括號和方括號在文件名中可能是合法的(在 Windows 上),但帶有它們的文件也會得到瀏覽器添加的下划線。

我遇到了同樣的問題,我認為user650881的答案是解決方案,但在我的情況下,問題是我錯誤地解析了Content-Disposition中的文件名,也就是說我保留了最后一個引號" char from attachment; filename="filename.ext"文件名 ( 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM