C#通过url id下载docx文件(无内容处理)

时间:2016-06-03 14:15:34

标签: c# file url download httpwebresponse

我花了大约3-4天时间通过堆栈溢出和谷歌搜索引擎来调查这个问题。

我的困境是这样的: 我的任务是在Visual Studio 2015上的Windows窗体中显示来自URL的文件(不确定我是否可以简单地打开它或者必须将其保存到文件夹中)。有问题的链接是这样但是由于这个不起作用只能通过内部网络或VPN连接访问: http://QualityWorkbench/ivscripts/qwbcgi.dll/docfetch?db=live&id=1090

到目前为止我所完成的是,我已经根据此链接从堆栈溢出文章构建了Windows窗体部分,该文章引出了一个博客链接:

How to display PDF or Word's DOC/DOCX inside WinForms window?

我已经非常类似地构建的内容适用于在url中具有文件名但不是上面提到的Quality Workbench链接的链接。一个例子是: http://www.e-iceblue.com/images/test.docx

我到处研究过,各种堆栈溢出文章都是通过HttpWebResponse标题来检查内容处理,但是当我通过它进行调试时,我看到的唯一标题是这些(没有关于内容处理):

标题名称:内容长度,值:411

标题名称:内容类型,值:text / html

标题名称:Set-Cookie,值:IGS_SessionID = 53114;路径= /; expires = Fri,2016年6月3日14:01:34 GMT,sessionid = 2d794a41-43ce-4c6b-96cc-7a832ac39670;路径= /; expires = Fri,2016年6月3日14:01:34 GMT

标题名称:服务器,值:Microsoft-IIS / 7.5

标题名称:X-Powered-By,值:ASP.NET

我知道我列出的内容非常模糊,所以我很乐意提供任何编码细节或任何人解读我的困境所需的任何信息:如何从仅使用Visual结尾的URL下载文件Studio 2015 C#。理想情况下打开文件而不保存它并将其显示为窗口形式是我的理想选择,但我也满意将文件保存到用户下载文件夹中。

2 个答案:

答案 0 :(得分:0)

首先,您需要确保您使用的URL确实为您提供了一个文件;正如Hintham在他/她的评论中所说,你收到的不是docx文件。

其次,在您的代码中,您需要向URL发出HTTP请求以获取文件。好的做法是捕获传输和/或HTTP错误。如果在请求期间没有发生HTTP错误,则在响应中将存在该文件。

最简单的方法(在我看来)就是参与WebClient.DownloadData。它会将文件检索到一个字节数组中,以便您可以将WinForms应用程序与其一起显示。看看MSDN documentation - 它很直接。

答案 1 :(得分:0)

@bozhidarstoinev - 经过长时间休息并回到它之后,我回顾了你提供的内容,然后查看了IE上链接的html源代码。就像你说的那样,该链接引用了一个包含真实URL下载链接的html网站。由于疲劳,我第一次没有抓住它,但真正的网址下载链接同样命名为我在我的问题中提供的内容,保存了3个字符。

感谢您让我走上正确的道路!