以下内容来自「玩转腾讯云」用户原创文章,已获得授权。

本文介绍下如何使用云函数来实现 Office 办公文件的预览

01. 前言

曾几何时,文档预览曾经很麻烦,小公司需要购买服务器,自行搭建文件服务器来满足产品的文件预览需求,用户上传的文件经由后端进行转码之后才能预览,技术团队需要搭建文件存储服务及转码服务才能实现基础功能,我司曾经就是这么做的。

虽然有公开的微软 Office 预览服务以及 kkfileview 等实现方案,但仍然存在诸多问题,比如微软 Office 预览的大小限制,kk 的略微繁重。难道如果我只是想要一个轻量级的文档服务就那么难吗?

No、No、No,之前一直在关注腾讯云云函数,也在不停基于云函数探索有意思的功能来满足平时的开发需求,前段时间正好公司项目需要用到金山的服务做文件预览,使用效果还可以,那么灵感来了,为什么不能将两个大佬的能力结合一下?

说干就干,腾讯云云函数和金山的文档的整合,我看行。

02. 探讨可行性

首先问题的关键在于通过后端服务去获取预览地址并通过一个网页去承载金山的预览服务,幸运的是这些都可以通过云函数做到,首先云函数是支持 Node.js 编写的,所以我们只要使用 Node.js 去请求金山的接口获取预览地址,然后通过设置函数返回类型为网页就可以将预览地址嵌入函数返回的 iframe 中来实现预览功能,是不是很简单易用。

Talk is cheap, show me the code. 下面我们来践行一下吧~

03. 云函数编写

'use strict';
const rp = require('request-promise')
const officeBaseUrl = '私有服务端?fileUrl='
exports.main = async (event, context) => {let fileUrl = 'http://默认下载的预览文件地址.doc'let param = {}if (event.queryStringParameters) {param = { ...event.queryStringParameters }} else {param = { ...event }}if (param.url) {fileUrl = param.url}let previewRes = await rp({ url: officeBaseUrl + fileUrl })previewRes = JSON.parse(previewRes)return {statusCode: 200,headers: {"content-type": "text/html"},body: `<script>location.replace("${previewRes.data.wpsUrl}");</script>`}
}

04. 问题记录

细心的同学会发现在云函数返回体部分在这里写的是一段js代码重定向到了一个url。这里之所以没有使用iframe去嵌入预览地址是因为会报获取token失败的错误,所以退而求其次采取了直接跳转到预览地址的方式来查看文件。

  • 体验地址

http://tcb.xuedingmiao.com/office_preview

  • 参考资料

    • 使用集成响应返回 HTML
    • 金山文档在线预览编辑服务

点击查看演示效果


Serverless 建站惊喜福利大派送!

建站计算资源云函数 SCF、文件存储 CFS、云原生数据库 TDSQL-C、内容分发 CDN、API 网关资源月月送。

点击这里,查看领取惊喜福利!

One More Thing

立即体验腾讯云 Serverless Demo,领取 Serverless 新用户礼包

【玩转云函数】腾讯云云函数结合金山文档打造轻量级 Office 在线预览服务相关推荐

  1. project甘特图导出图片_云盒子预览升级,新增WPS、Visio、Project文档在线预览

    在线预览是企业云盘的一个重要功能.通过企业云盘提供的文件转换服务,将不同类型文档格式转换为可以直接预览的格式,不需要安装任何插件在线查看文件,为用户提供极大便捷,在线预览已经逐渐变成用于查阅文档的使用 ...

  2. .net oss存储 oss api接口开发 office文档上传在线预览oss存储 office文档上传oss 阿里云oss接口开发

    word在线预览api接口 office在线预览接口 word转图片 ppt在线预览 excel在线预览 预览支持的文件格式:word(doc,docx),excel(xls,xlsx),ppt(pp ...

  3. 十三种技术文档模板_竞品分析|关于产品规划的思考:石墨文档 VS 腾讯文档 VS金山文档...

    作者以在线协作文档行业领先的石墨文档.腾讯文档和金山文档为例进行了了竞品分析,通过对几款产品全方位的分析,总结了自己关于石墨文档产品规划的思考. 一.竞品概述 1. 竞品目的 2. 竞品目的 通过对石 ...

  4. 腾讯会议APP——新手PRD文档

    Hi 作者有话说:本人目前是一名研二学生,近期决定从技术转向产品经理,正在找产品经理实习岗位中~吾辈深知道阻且长,慢慢开始学习吧!这将是我第一篇PRD文档,由于即将面试的岗位都与<视频>相 ...

  5. 在线协作文档综合评测 :金山文档、腾讯文档、石墨文档

    在线协作文档综合评测 :Notion.FlowUs.Wolai.飞书.语雀.微软 Office.谷歌文档.金山文档.腾讯文档.石墨文档.Dropbox Paper.坚果云文档.百度网盘在线文档 如今, ...

  6. 基于Java毕业设计在线云音乐系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计在线云音乐系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计在线云音乐系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语 ...

  7. 腾讯轻量+宝塔搭建文档在线预览项目kkFileView

    一.使用的服务 1.腾讯云 [腾讯云]轻量应用服务器Lighthouse,「轻」松上云!1核2G6M 限时低至74元/年起! https://cloud.tencent.com/act/cps/red ...

  8. linux上wps能云同步吗,Linux版WPS管理云端文档

    WPS for Linux的主界面的右上角,有3个非常.非常.非常小的图标,这里藏有玄机! 1 在ElementaryOS上使用WPS for Linux的时间不长,但是体验还是相当不错的.客户端本身 ...

  9. Java计算机毕业设计大学生数字云平台2021源码+系统+数据库+lw文档

    Java计算机毕业设计大学生数字云平台2021源码+系统+数据库+lw文档 Java计算机毕业设计大学生数字云平台2021源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言: ...

最新文章

  1. hdu 3046(最小割最大流)
  2. Java 8 forEach 示例
  3. MUI - 解决bug: iphone页面保存时popPicker自动弹出来
  4. C#面向对象名词比较(一)
  5. 【数据结构、算法】八大排序算法概述(算法复杂度、稳定性)
  6. matlab去趋势,[转载]使用Matlab对数据进行去趋势(detrend)
  7. MOOC网站日志分析
  8. 要快乐的度过充满困难的一生——任总给陈珠芳及党委成员的一封信
  9. JS_简单倒计时_实例_格式:0 天 20 小时 48 分 54 秒
  10. android系统下载管理器,android 系统下载管理器
  11. 《阿米巴经营》第一章读后感1200字
  12. 零信任体系下的企业数据安全建设路径
  13. 相机计算坐标公式_相机位姿估计3:根据两幅图像的位姿估计结果求某点的世界坐标...
  14. 超越OCR的富文档内容解析神器LayoutParser
  15. webpack之常见性能优化
  16. 【screen】Linux下screen的使用
  17. MongoDB芒果数据库学习笔记一
  18. 大型网站具备的9大特点
  19. 用友U8案例教程库存管理前台操作
  20. getsockopt( )函数详解

热门文章

  1. 斐讯n1安装centos7+docker openwrt
  2. html5 iframe隐藏滚动条,javascript-加载iframe后如何隐藏父垂直滚动条?
  3. 压力测试的几种常见的解决方案
  4. GNSS监测站在滑坡和地质灾害中的应用
  5. wifi mouse linux,wifi mouse pro最新版下载
  6. html隐藏后保持占有的位置,每日一题
  7. 位运算——起床困难综合症
  8. 传感器实验——485空气温湿度
  9. Tomcat漏洞复现
  10. Oracle RAC 11G补丁安装最佳实践