代码之家  ›  专栏  ›  技术社区  ›  Daniel Revell

下载Office文档而不让Web服务器尝试呈现它

  •  0
  • Daniel Revell  · 技术社区  · 16 年前

    我正在尝试下载一个以SharePoint为宿主的InfoPath模板。如果我在Internet Explorer中点击该URL,它会询问我在哪里保存它,并在我的磁盘上获得正确的文件。如果我尝试用WebClient或httpWebRequest以编程方式进行此操作,那么我会改为返回HTML。

    我如何发出请求,使Web服务器返回实际的XSN文件,而不尝试用HTML呈现它。如果Internet Explorer能做到这一点,那么我也有理由这样认为。

    我已经尝试将请求的accept属性设置为application/x-microsoft-infopathformtemplate,但这没有帮助。那是在黑暗中拍摄的。

    4 回复  |  直到 16 年前
        1
  •  1
  •   James Curran    16 年前

    我建议使用 Fiddler 或 WireShark ,查看IE是如何发送请求的,然后复制请求。

        2
  •  0
  •   Josh Lee ZZ Coder    16 年前
        3
  •  0
  •   Armen Michaeli    16 年前

    有一个HTTP响应头使HTTP用户代理下载一个文件,而不是尝试显示该文件:

    Content-Disposition: attachment; filename=paper.doc
    

    我知道您可能没有访问服务器的权限,但是如果您可以访问服务器脚本,这是一种直接的方法。

    有关头的更多详细信息,请参阅http/1.1规范和/或说Google。

        4
  •  0
  •   Shawn Steward    16 年前

    这是vb.net,但你应该明白这一点。我用一个.aspx页面完成了这项工作,您将文件名传递到该页面,然后返回文件的内容类型,并添加一个标题使其成为附件,这会提示浏览器将其视为附件。

    Response.AddHeader("Content-Disposition", "attachment;filename=filename.xsn")
    Response.ContentType = "application/x-microsoft-InfoPathFormTemplate"
    Response.WriteFile(FilePath)  ''//Where FilePath is... the path to your file ;)
    Response.Flush()
    Response.End()
    
    推荐文章