`
xidajiancun
  • 浏览: 492409 次
文章分类
社区版块
存档分类
最新评论

如何整合Office Web Apps至自己开发的系统(二)

 
阅读更多

WOPI项目的创建

首先用vs2012创建一个mvc4的程序。如图:

clip_image002

从上一篇我们可以知道,WOPI通讯主要通过两个服务:

一个是CheckFileInfo服务,

一个是GetFile服务。

所以下面我们主要介绍这两个服务的创建。

1. 首先创建CheckFileInfo服务:

我们先确定这个服务的路由地址

设置为:http://<ServerName>/files/<filename>?access_token=<token>

修改App_Start文件夹下面的WebApiConfig.cs文件。

插入下列代码:

config.Routes.MapHttpRoute(

name: "FileInfo",

routeTemplate: "wopi/files/{name}",

defaults: new { controller = "files", action = "GetFileInfo" }

);

如图所示

clip_image004

创建一个名称为files的Controller,

clip_image006

设置为空API控制器:

clip_image008

之所以我们不用平常的MVC控制器,而选API控制器,是因为我们做的是服务,来返回信息,所以要换成ApiController。

这个服务要返回的是json,属性包括为

BaseFileName

OwerId

Size

SHA256

Version

所以我们要创建一个model,包含上述属性

如下图:

clip_image010

在上述的路由器规则中,action用的是GetFileInfo方法,所以要在FileController规则中写一个GetFileInfo方法,这个方法返回CheckFileInfo类型。

复制代码
public CheckFileInfo GetFileInfo(string name, string access_token)

{

string _access_token = access_token;

var file = HostingEnvironment.MapPath("~/App_Data/" + name);//从硬盘中获取name文件

FileInfo info = new FileInfo(file);

var json = new CheckFileInfo

{

BaseFileName = info.Name ,//"test.docx",

OwnerId = "admin",

Size = info.Length,

SHA256 = "+17lwXXN0TMwtVJVs4Ll+gDHEIO06l+hXK6zWTUiYms=",

Version = "GIYDCMRNGEYC2MJREAZDCORQGA5DKNZOGIZTQMBQGAVTAMB2GAYA===="

};

return json;

}
复制代码

如下图

clip_image012

我们访问一下这个地址:

http://192.9.206.52:1407/wopi/files/test.docx?access_token=06l+hXK6zWTUi

这个192.9.206.52是我的本机地址。

得到下列结果:

clip_image014

证明这个服务制作成功。

2.然后再来制作GetFile服务。

因为GetFileInfo的URI地址

http://<ServerName>/files/<filename>?access_token=<token>

所以GetFile地址应该比其多一个/Contents,所以为

http://<ServerName>/files/<filename>/Contents?access_token=<token>

设置它的路由地址

config.Routes.MapHttpRoute(

name: "Contents",

routeTemplate: "wopi/files/{name}/contents",

defaults: new { controller = "files", action = "GetFile" }

);

如下图:

image

GetFile这个服务返回的应该是数据流,所以返回的类型应该是HttpResponseMessage类型。

从硬盘中获取一个doc文件,转换为Stream类型,代码如下:

复制代码
public HttpResponseMessage GetFile(string name, string access_token)

{

try

{

string _access_token = access_token;

var file = HostingEnvironment.MapPath("~/App_Data/" + name);//name是文件名

var rv = new HttpResponseMessage(HttpStatusCode.OK);

var stream = new FileStream(file, FileMode.Open, FileAccess.Read);

rv.Content = new StreamContent(stream);

rv.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

return rv;

}

catch (Exception ex)

{

var rv = new HttpResponseMessage(HttpStatusCode.InternalServerError);

var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(ex.Message ?? ""));

rv.Content = new StreamContent(stream);

return rv;

}

}
复制代码

如下图:

clip_image018

至此,两个服务制作完毕。

可以访问下列地址查看效果,

http://192.9.206.50/wv/wordviewerframe.aspx?WOPISrc=http%3a%2f%2f192.9.206.52%3a1407%2fwopi%2ffiles%2ftest.docx&access_token=06l+hXK6zWTUi

其中

192.9.206.50为OWA的机器地址,

192.9.206.52为本机的地址。

这个URL地址带了两个参数

分别为WOPISrc,值为http://192.9.206.52:1407/wopi/files/test.docx

Access_token,值为06l+hXK6zWTUi

这两个参数的意思,我已经在以前的博文中《如何整合Office Web Apps至自己开发的系统(一)》说过了。

在这个例子中,access_token我是随便取的,并且在代码中也没有对这个令牌进行验证。

确保两台机器的相应端口能互相访问。

访问得到的结果如下:

clip_image020

怎么会访问出错呢?

翻了很久资料,发现有老外也遇到过类似这种问题:

I write this message because on actually working on this WOPI protocol. I try to build a WOPI host. I think i'm almost finish the "view" action. But i got some problems with the CheckFileInfo (JSON) or GetFile (/content). For me everything is well fonctionning, but the WAC doesn't work just after it call my JSON. I really dont know why.. I observed all the interactions between SharePoint and WAC, to show what is different with mine host. But i think i need some help now. Does anyone can try to give me some hint ? I checked everythings (Correlation-ID, JSON, access-token) ...

别人的回答是让他考虑一下是不是SHA散列算法的问题:

You might also double-check that your SHA hashes are being calculated correctly - this can cause some problems.

并给了一个网站地址:www.tylerbutler.com/.../base64-encoded-sha256-hashes

那就按照提示把散列算法加上去,

代码如下:

复制代码
var file = HostingEnvironment.MapPath("~/App_Data/" + name);//从硬盘中获取name文件
            FileInfo info = new FileInfo(file);

            var hasher = SHA256.Create();
            byte[] hashValue;
            using (Stream s = File.OpenRead(file))
            {
                hashValue = hasher.ComputeHash(s);
            }
            string sha256 = Convert.ToBase64String(hashValue);
复制代码

如下图:

clip_image022

再次运行,OK,大功告成

clip_image024

其实按照上述步骤,就可以在自己的系统中调用Office Web Apps的查看功能了,实在要看demo的同学可以去下列链接下载

http://download.csdn.net/detail/poisson1984/6003183

最近csdn上的积分吃紧,顺便刷点积分,微笑

下面有一个外国的例子,会更全面:http://pan.baidu.com/s/1f4suc

分享到:
评论

相关推荐

    office web apps整合

    总结来说,"Office Web Apps整合"涉及了Java后端开发、WOPI协议实现、认证集成、文件存储管理、前端展示等多个技术领域,是一个综合性的项目实施过程。通过这样的整合,用户可以在任何有网络的地方,使用任何设备,...

    ASP.net office web apps整合

    ASP.NET Office Web Apps 整合是一项技术,它允许开发者在Web环境下实现Microsoft Office应用程序(如Word、Excel)的功能,让用户可以在浏览器中查看、编辑和协作处理Office文档。这个技术结合了ASP.NET的强大Web...

    Office Web Apps Server

    使用`Import-Module ServerManager`导入模块,接着运行`Add-WindowsFeature`命令,添加一系列Web服务器角色和服务,包括Web服务器、静态内容、应用程序开发等,以满足Office Web Apps Server的基本需求。 完成基础...

    Office Web Apps示例程序

    1. **OWA Host**:这可能是一个自定义开发的Web应用程序,它利用Office Web Apps的API和服务接口,来在用户的Web浏览器中显示和操作Office文档。这个"OWA host"文件可能是一个源代码项目,使用Visual Studio 2012...

    office web apps Service 服务器搭建

    Office Web Apps (OWA) 是一套由微软开发的应用程序,允许用户在Web浏览器中查看、编辑和共同创作Office文档。本文旨在详细介绍如何在Windows Server 2008 R2环境下搭建OWA服务,以便用户可以通过网络访问和编辑...

    Office Web Apps系统调研

    ### Office Web Apps系统调研知识点详解 #### 一、概述 Office Web Apps (OWA) 是一套基于Web的应用程序,能够使用户在Web浏览器中查看、编辑Microsoft Office文档(包括Word、Excel、PowerPoint)。这套系统提供了...

    Office Web App安装与接口开发文档

    接着,在Office Web App服务器上安装IIS和.NET Framework 4.5.2,最后安装Office Web Apps Server并打上补丁SP1,确保系统运行稳定。 二、系统配置与部署 部署完成后,需在Office Web Apps服务器上以管理员身份...

    office365开发指南

    作者在加入微软之前,有相当长的一段时间都是从事与Office平台定制和应用系统开发的工作,最早是做VBA的开发,后来有做过VSTO,这些都是Office 365开发环境搭建的重要组成部分。 其次,Microsoft Graph是Office 365...

    web-apps:ONLYOFFICE Document Server的前端,用于构建程序界面

    该存储库称为web-apps-pro项目信息官方网站: : 代码存储库: : SaaS版本: : 用户反馈和支持如果您对有任何疑问或疑问,请访问我们的官方论坛以找到您的问题的答案: 或者您可以在上询问和回答ONLYOFFICE开发问题...

    ms_office_web_apps:Redmine 插件,用于通过 Microsoft Office Web Apps 在浏览器中查看 Word、Excel 和 PowerPoint 文件

    标题“ms_office_web_apps”所指的是一款针对Redmine项目管理系统的插件,其主要功能是集成Microsoft Office Web Apps,使得用户能够在浏览器环境下查看Word、Excel和PowerPoint等Office文档。这一特性极大地提升了...

    OfficePIA开发库14(支持Office2010)

    描述中的"OfficeRIA"可能是一个误写,通常指的应该是Office Add-ins或者Office Web Apps,而不是RIA(Rich Internet Applications)。不过,我们可以理解为这个开发库可能包含创建RIA类似功能的能力,即开发可以在...

    ASP.NET在线打开Office 文件实例

    Web Apps是由微软提供的一个云端服务,允许用户在浏览器中直接查看和编辑Microsoft Office文档,无需安装本地的Office套件。ASP.NET可以与Web Apps集成,从而在Web应用中提供这种功能。 实现这个功能的关键在于利用...

    用于 Access Web应用开发人员的Microsoft PowerApps简介中文版

    总的来说,Microsoft PowerApps为Access Web应用开发人员提供了一种现代化的、更适应移动和云环境的替代方案,虽然存在一些差异,但通过学习和利用其特性和优势,可以构建出高效且功能强大的业务解决方案。

    Microsoft Office 与 Microsoft SharePoint 的整合应用.pdf

    1. **Office Web Apps**:SharePoint 2010及更高版本内置了Office Web Apps,用户可以直接在浏览器中查看和编辑Office文档。 2. **SharePoint Designer**:通过SharePoint Designer,可以创建自定义列表、视图,并将...

    Office 365 Devguide

    文中还详细解释了Excel Add-in的三种开发方法(VBA、VSTO和Web Add-in),以及Office Web Add-in的技术原理。Office Add-in的清单文件和如何实现单点登录(SSO)也得到了阐述。 对于SharePoint Online的开发,文档...

    WOPIHoste.zip

    WOPIHoste.zip是一个压缩包,包含用于实现Office Web Apps(OWA)文件在线编辑功能的C#中间件代码。这个中间件是对接微软的在线编辑服务的关键组件,允许用户在Web浏览器中直接查看和编辑Microsoft Office文档,如...

    office03、office07、office10、office13官方卸载工具

    3. Office 2010:在2007的基础上进一步改进,提供更多的在线协作功能,增强了云服务支持,例如SkyDrive(现在的OneDrive)集成,还有Office Web Apps,可以在网页上预览和编辑文档。 4. Office 2013:首次全面支持...

    office2003 owc11

    随着技术的进步,Microsoft推出了更新的Web部件,如Office Web Apps和SharePoint Web Parts,它们在功能上更加强大,且适应现代Web标准。此外,还有许多开源和第三方库,如Google Charts、D3.js等,提供类似的服务...

    OWA安装部署

    Office Web Apps Server (OWA) 是由微软开发的一款应用程序,用于提供在线版本的Microsoft Office应用套件,如Word、Excel、PowerPoint 和 OneNote等。用户可以通过网页浏览器访问这些应用程序,实现对文档的查看与...

    office 简介关于office的前世今生

    2010年,微软推出了Office Web Apps,让用户可以在浏览器中编辑文档。2013年,Office 365订阅服务问世,提供云端存储、实时协作和跨设备访问等功能。这一变化反映了办公场景的多元化需求。 在提供的文件名称列表中...

Global site tag (gtag.js) - Google Analytics