我有一个网络应用程序,允许用户通过按网页上的按钮上传和下载图像文件。此页面的用户报告当文件具有Unicode路径名时,IE 7和8无法下载文件。 IE会提示用户输入一个对话框,说明:" Internet Explorer无法在(webserver)下载(文件)。"。
问题只发生在IE中。不幸的是,我无法在我的机器上使用这些版本重现问题。
我的问题是,什么可能导致这种情况,我该如何防止它发生?我已经读过有关缓存控制的问题(我目前将其设置为no-cache);但是,我没有使用HTTP-S,只有包含Unicode字符的文件名才会出现问题。
更新:问题似乎只发生在用户尝试下载bmp文件路径时。非标准文件路径下载成功。可能是Paint造成了麻烦吗?
Javascript集附加一个指向与该文件关联的URL的iframe。
答案 0 :(得分:1)
感谢您提供最新评论。
这可能是:
我认为它很可能是第2号,因为你无法重现这个问题(你使用的是浏览器的真实版本,对吧?不像MultiIEs那样)。
您可以通过运行iexplore -extoff
让他们启动没有扩展程序的Internet Explorer,看看是否有任何区别。他们还可以检查他们的安全设置。
我在IE中发现它可能是造成这个问题的众多因素,正如我之前提到过的“无法下载”类似的问题,原因是由于某种原因我们的服务器是双gzipping使用IE浏览器的内容仅,IE显然不那么喜欢。
我知道这些文章已经过时了,我确信它们不适用,但它们可能是相关的: http://support.microsoft.com/kb/816868 http://support.microsoft.com/kb/812935/en-us
答案 1 :(得分:0)
我认为你必须在下载链接中对文件名进行url-encode。问题可能是浏览器不知道Web服务器文件系统的字符集,因此不同的浏览器可能会对文件系统的字符集采取不同的假设。网址编码应解决这种歧义。
答案 2 :(得分:0)
因此,只有在将content-disposition标头设置为附件时才会出现该错误。从http响应标头中删除标头后,问题就解决了。
如果将mime类型设置为未知值,则位图将不会呈现为图像,并且将被视为附件。