在没有Web服务器尝试呈现它的情况下下载office文档

时间:2010-04-01 15:22:37

标签: c# httpwebrequest content-type mime-types

我正在尝试下载托管在SharePoint上的InfoPath模板。如果我点击了网络浏览器中的网址,它会问我在哪里保存它,我在磁盘上获得了正确的文件。如果我尝试使用WebClient或HttpWebRequest以编程方式执行此操作,那么我将返回HTML。

如何发出请求,以便Web服务器返回实际的xsn文件,而不是尝试在html中呈现它。如果Internet Explorer可以做到这一点,那么认为我也可以这样做。

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

4 个答案:

答案 0 :(得分:1)

我建议使用FiddlerWireShark,以确切了解IE如何发送请求,然后重复该请求。

答案 1 :(得分:0)

您是否尝试过欺骗Internet Explorer's User-Agent

答案 2 :(得分:0)

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

Content-Disposition: attachment; filename=paper.doc

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

有关标题的更多详细信息,请参阅HTTP / 1.1规范和/或Google。

答案 3 :(得分:0)

这是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()