自定义开发的系统整合 office Web apps

本文介绍了如何将Office Web Apps与自开发的ASP.NET系统整合,涉及的关键API包括文件检查、获取文件流和更新文件流。通过实现特定API,系统能够支持文件的查看和编辑。详细讨论了各个API的实现细节,并提供了源码下载链接。
摘要由CSDN通过智能技术生成
Office文档的web应用叫WOPI Host或者WOPI Server。
把查看编辑操作Office文档的web应用叫WOPI Client或者叫WOPI applications。
所以,Office Web Apps充当的就是WOPI Client的角色。
SharePoint,Exchange,自己开发的文档管理系统充当的就是WOPI Host的角色。
再看一下,浏览器,server,client三者的请求顺序及关系

其实网上有关office web app的整合已经有相关的文章了,典型的是如何整合Office Web Apps至自己开发的系统(一) 和如何整合Office Web Apps至自己开发的系统(二),微软官网也有相应的demo

这里在简单描述一下原理吧:office web apps(owas)扮演者一个客服端,它会访问我们asp.NET 站点的文件然后呈现出来。而我们常用的API主要有如下3个:

GET api/wopi/files/{name}?access_token={access_token}    
GET api/wopi/files/{name}/contents?access_token={access_token}     
POST api/wopi/files/{name}/contents?access_token={access_token}

至于每个API做什么 这里就不多说,第一个是owas 检查文件,传递的信息是json数据格式,第二个是owas获取文件流,第三个是owas post的文件流(保存修改文件)。首先我们来看看第一个API的实现:

  1. [Route("files/{name}/")]  
  2.        public CheckFileInfo GetFileInfo(string name, string access_token)  
  3.        {  
  4.            Validate(name, access_token);  
  5.            var fileInfo = _fileHelper.GetFileInfo(name);  
  6.            bool updateEnabled = false;  
  7.            if (bool.TryParse(WebConfigurationManager.AppSettings["updateEnabled"].ToString(), out updateEnabled))  
  8.            {  
  9.                fileInfo.SupportsUpdate = updateEnabled;  
  10.                fileInfo.UserCanWrite = updateEnabled;  
  11.                fileInfo.SupportsLocks = updateEnabled;  
  12.            }  
  13.            return fileInfo;  
  14.        }  
 [Route("files/{name}/")]
        public CheckFileInfo GetFileInfo(string name, string access_token)
        {
            Validate(name, access_token);
            var fileInfo = _fileHelper.GetFileInfo(name);
            bool updateEnabled = false;
            if (bool.TryParse(WebConfigurationManager.AppSettings["updateEnabled"].ToString(), out updateEnabled))
            {
                fileInfo.SupportsUpdate = updateEnabled;
                fileInfo.UserCanWrite = updateEnabled;
                fileInfo.SupportsLocks = updateEnabled;
            }
            return fileInfo;
        }
这里的 Validate(name, access_token) 方法主要是验证请求的文件名name与参数access_token是否一致,主要是验证是否是非法访问,返回一个CheckFileInfo对象,CheckFileInfo的定义如下:

  1. public class CheckFileInfo  
  2.     {  
  3.         public CheckFileInfo()  
  4.         {  
  5.             this.SupportsUpdate = false;  
  6.             this.UserCanWrite = false;  
  7.         }  
  8.         public string BaseFileName { getset; }  
  9.         public string OwnerId { getset; }  
  10.         public long Size { getset; } //in bytes  
  11.         public string SHA256 { getset; } //SHA256: A 256 bit SHA-2-encoded [FIPS180-2] hash of the file contents  
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值