FileStream和WebClient之间的区别

时间:2015-06-17 07:17:04

标签: c# bytearray webclient filestream ms-wopi

所以,我实际上是在为一个Web项目设置一个Wopi主机。

我一直在使用这个sample(来自Shawn Cicoria的那个,如果有人知道的话),他提供了一个完整的代码示例,告诉您如何构建使用Office Web App服务器的链接有一些文件。

我的问题是,他的样本正在使用OWA服务器上的文件,我需要它来处理在线文件(例如http://myserv/res/test.docx。所以当他读取他的文件内容时,他正在使用它:

var stream = new FileStream(myFile, FileMode.Open, FileAccess.Read);
responseMessage.Content = new StreamContent(stream);

但这不适用于“http”文件,所以我改变了它:

byte[] tmp;
using (WebClient client = new WebClient())
{
    client.Credentials = CredentialCache.DefaultNetworkCredentials;
    tmp = client.DownloadData(name);
}
responseMessage.Content = new ByteArrayContent(tmp);

正在编译。通过此示例,我设法在我的办公室Web应用程序中打开excel文件,但不打开单词和powerpoint文件。所以,这是我的问题。

这两种方法之间是否存在差异,这可能会改变我正在阅读的文件的内容,尽管WebClient提到了“在线阅读”这一事实?

对于不清楚的帖子感到抱歉,解释这样的问题并不容易x)我尽了最大努力。

感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

  

这两种方法之间是否存在差异,这可能会改变   我阅读的文件的内容,尽管事实上   WebClient允许"在线阅读"

FileStream打开文件句柄到本地放在磁盘上的文件,或者放在网络中其他位置的远程磁盘。当您打开FileStream时,您将直接操作该特定文件。

另一方面,WebClientHTTP protocol的包装。它的职责是构建HTTP请求和响应消息,以便您方便地使用它们。它没有直接了解文件等资源,或者特别是它所在的位置。它所知道的只是构造符合规范的消息,发送请求并期待响应。