【发布时间】:2015-06-17 07:17:04
【问题描述】:
所以,我实际上是在尝试为 Web 项目设置 Wopi Host。
我一直在使用这个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);
正在编译。使用这个示例,我设法在我的 office web 应用程序中打开了 excel 文件,但没有打开 word 和 powerpoint 文件。所以,这是我的问题。
这两种方法之间是否有区别,尽管 WebClient 允许“在线阅读”,但它可能会改变我正在阅读的文件的内容?
对不起,不清楚的帖子,解释这样的问题并不容易x)我尽力了。
感谢四位的帮助!
【问题讨论】:
-
没有“http 文件”之类的东西——你得到的是一个 URL,没有文件。不确定“这可能会改变我正在阅读的文件的内容”是什么意思。如果您需要能够修改文件然后将其保存回来,那么 Web 服务器需要支持(并且您必须具有权限...)
-
不,我只需要阅读它。 (抱歉解释:/)。事实上,我的办公室 Web 应用服务器需要将要显示的文件的内容。
FileStream只能操作“本地”文件,如下面的答案所示。对于我检查它们的权限。我所做的是,我调用了我的项目的 api 链接,它返回了传入参数的文件的内容。所以我设法像这样下载它。然后,我尝试在 Associates 软件中打开 ppt 和 docx 文件。这个词开得很好!但遗憾的是不是PPT -
我不知道这是否清楚,这一切都很难解释:/
-
还不是很清楚,不是……你的问题真的是“我用WebClient下载了一个Powerpoint文件,打不开”吗?如果是这样,其余的似乎无关紧要......
-
不,这不是问题所在。我不应该调用这个 url,它只是为了测试。
office web app调用我的应用程序 2 次以便能够呈现文档视图。首先它会询问一些关于它的信息(大小,...)。我的应用程序响应,然后office web app要求我的应用程序获取文件的二进制内容。我在上面发布的示例应该获取文件内容(使用WebClient),并将其返回给office web app,以便他可以渲染视图。当我在 excel 文件上尝试时,这个示例正在工作。
标签: c# bytearray webclient filestream ms-wopi