代码之家  ›  专栏  ›  技术社区  ›  dev.e.loper

Firefox偶尔显示文件流而不是文档

  •  3
  • dev.e.loper  · 技术社区  · 15 年前

    当用户请求下载文档时,我正在使用httpresponse.outputstream.write方法将PDF文件写入httpresponse。它适用于除火狐(3.5.8)以外的所有浏览器。在Firefox中,它有时显示文件,有时显示实际的字节流。当它显示字节流时,HTTP响应永远不会结束。我看到“传输数据”状态,字节流以EOF结束。一段时间后,我得到“连接被重置”窗口。

    alt text http://img31.imageshack.us/img31/7907/displaybytes.png alt text http://img193.imageshack.us/img193/7246/displayendofstream.png alt text http://img211.imageshack.us/img211/1774/timeout.png

    这里是响应头:

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Length: 103185
    Content-Type: application/pdf
    Expires: -1
    Server: Microsoft-IIS/7.0
    X-AspNet-Version: 2.0.50727
    Content-Description: stuff.pdf
    Content-Disposition: inline;filename="stuff.pdf"
    X-Powered-By: ASP.NET
    Date: Mon, 22 Feb 2010 16:15:38 GMT
    
    5 回复  |  直到 15 年前
        1
  •  1
  •   Drejc    15 年前

    它还可能与分配给文档mime类型的操作有关。例如在FF中 actions can be set .

    当然,您还需要确保服务器正在传输 correct mime type .

        2
  •  1
  •   Gabriel McAdams    15 年前

    我认为这个问题最有可能出现在Firefox或Acrobat插件中。

    无论什么时候某些东西有时是有效的,而不是其他的,你必须真正密切注意它们之间的差异。问题总是存在分歧。

    在您的情况下,您可能永远不知道原因,因为不同之处可能在浏览器或插件中。你的头像是应该看到的。它适用于所有其他浏览器。基于你的头部,这也是它在这个浏览器中应该工作的方式。

    我把这个摆在Mozilla面前,看看他们怎么说。

    作为一种潜在的解决方案,您可以尝试在用户浏览器关闭时将内容部署更改为“附件”。这将导致出现“打开或保存”对话框。然后用户仍然可以单击“打开”在页面中查看它。

    Content-Disposition: attachment; filename=stuff.pdf
    
        3
  •  0
  •   Raja    15 年前

    当内联呈现的PDF文件在源代码管理下并且是只读的时,我们遇到了这个问题。我们正在使用VSS进行源代码管理,当我们部署PDF时,它的呈现方式与屏幕截图中的完全相同。然后我们把新的PDF副本放进去,然后它就工作得很好了。可能检查PDF是否为只读,如果是,请尝试取出readonly属性,然后重试。

    希望这有帮助。

    谢谢,

    拉贾

        4
  •  0
  •   Chris    15 年前

    如果您右键单击并另存为,它是否另存为正确的PDF格式,您可以查看?我怀疑你写的PDF格式不正确,或者你的头是错误的。

        5
  •  0
  •   dev.e.loper    15 年前

    看起来它没有完成请求。解决办法是 Response.End() 最后。