Asp.net与office web apps的整合

本文介绍了如何将Office Web Apps与ASP.NET系统整合,包括API的使用、编辑和查看模式的实现,以及遇到的问题和解决方案。示例代码展示了文件操作的过程,并提供源码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实网上有关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的实现:

 [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的定义如下:

public class CheckFileInfo
    {
        public CheckFileInfo()
        {
            this.SupportsUpdate = false;
            this.UserCanWrite = false;
        }
        public string BaseFileName { get; set; }
        public string OwnerId { get; set; }
        public long Size { get; set; } //in bytes
        public string SHA256 { get; set; } //SHA256: A 256 bit SHA-2-encoded [FIPS180-2] hash of the file contents
        public string Version { get; set; }  //changes when file changes.
        public bool SupportsUpdate { get; set; }
        public bool UserCanWrite { get; set; }
        public bool SupportsLocks { get; set; }
    }

现在在来看看第二个api的实现,主要返回对应文件的数据流:

[Route("files/{name}/contents")]
        public HttpResponseMessage Get(string name, string access_token)
        {
            try
            {
                Vali
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值