我的附件名称有问题。当我在谷歌浏览器上调用该网站时,它会返回具有正确名称和扩展名的文件。我用Internet Explorer测试它也很好用。问题在于只有Firefox。我调用该网站,它返回文件标题上的第一个单词,没有扩展名。
例如,如果我想要一个名为“My report.docx”的文件,它会变成一个名为“My”的文件。我用谷歌搜索,结果发现这是人们的常见问题,因为浏览器以不同的方式读取标题。他们说修复是引用文件名:
Content-Disposition: attachment; filename=My Report.docx
现在是:(注意引号)
Content-Disposition: attachment; filename="My Report.docx"
然而,这对我不起作用。
在Chrome上它返回“My Report.docx”(实际上是引号)。 Firefox返回了一个奇怪的文件,该文件具有正确的扩展名和正确的名称,没有引号但是无法执行。这是正确的文件大小,适当的扩展名和正确的名称,但它无法执行。它还返回文件名前后的空格。
答案 0 :(得分:4)
这应该按预期工作,这是另一个具有相同问题的SOq:
以及Mozilla页面(我猜你引用了这个):
我不知道您的服务器端代码的具体细节,但这里有一些事情需要确认/尝试:
wget
或curl
或类似的内容来执行此操作。Content-Type
标题? .png
或.xls
?事实上,最简单的方法是尝试使用纯文本文件(text/plain
),然后从那里取出。希望这有帮助。
答案 1 :(得分:4)
我知道这是一个非常古老的问题,但我最近遇到了同样的问题。解决方案是
由于你已经尝试过2,你可以尝试使用1并看看它是如何运作的。
通常我会使用ContentDisposition
类为我生成标题:
Dim contentDispositionHeader = New Net.Mime.ContentDisposition() With {.FileName = filename}
Response.AddHeader("Content-Disposition", contentDispositionHeader.ToString())
希望这有帮助。