永中office在我的项目中主要的应用目的是在线预览office文件。
至于为啥不用微软,不知道是不是我的姿势不对,大佬也说在国内可能出现无法转换(误)。
复制代码
准备
先进入官网,我需要的office在线预览功能在永中的DCS文档。
**这里我就不得不吐槽了,作为和罗老师(罗永浩)一起研发下一代智能语音控制的坚果office的合作厂商,这文档写的太不明确了吧。**
复制代码
确定项目方案
永中这边提供的文件预览方式有两种:
1. 给永中的服务一个office文件的下载链接,永中服务器下载文件转换预览后给你一个网页地址。
- 预览的用户需要上外网(由于我是做oa的,客户还真的不一定有外网)
- 你的服务站点必须要在公网环境(oa的也真的不一定),要能被永中服务器下载到。
2. 给永中的服务上传一个office文件,返回一个网页地址。
- 预览的用户需要上外网
- 你的服务站点必须能上传文件到外网
由于我是开发oa系统的选手,选择了限制条件较少的2方式。
复制代码
调用接口
忍不住再吐槽一遍,官网文档的调用示例是不知道从哪里抄来的一段php上传文件的代码,我认为是非常不明确的,因此我对照了kodexplorer里的方法来编写,这里感谢一下这些可爱的开源工作者。
复制代码
下载链接方式(1)
这个方法只是一个简单的http请求,直接上示例就好。
复制代码
<?php
$url = "http://dcs.yozosoft.com/onlinefile";
$uri = "http://dcs.yozosoft.com/example/doc/doctest.docx";
$response = onlinefile($url, $uri);
echo $response;
function onlineFile($url, $uri)
{
$data = array('downloadUrl' => $uri, 'convertType' => '1');
$data = http_build_query($data);
$params = array(
'http' => array(
'method' => 'POST',
'content' => $data,
'header' => "Content-type:application/x-www-form-urlencoded"
)
);
$ctx = stream_context_create($params);
$fp = file_get_contents($url, false, $ctx);
if (!$fp) {
return false;
}
return $fp;
}
复制代码
结果:
{
"result": 0,
"data": [
"http://dcs.yozosoft.com:8000/2018/11/14/MTgxMTE0ODM0Njc1MjMy.html"
],
"message": "转换成功",
"type": 1
}
复制代码
上传文件方式
这个方式也很简单,其实把参数明确就没有那么多弯路要走,再次吐槽官方文档上的示例。
复制代码
$url = "http://www.yozodcs.com/upload";
$response = uploadFile($url, './1.xls');
echo $response;
function uploadFile($url, $filePath)
{
$filePathInfo = pathinfo($filePath);
$post = array("convertType" => 1);
$mime = 'application/vnd.ms-excel';
if (@class_exists('\CURLFile')) {
$post['file'] = new CURLFile($filePath, $mime, $filePathInfo['filename']);
} else {
$post['file'] = "@" . $filePath . ";type=" . $mime . ";filename=" . $filePathInfo['filename'];
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
curl_close($ch);
if (!empty($result)) {
return $result;
}
return false;
}
复制代码
结果:
{
"result": 0,
"data": [
"http://dcs.yozosoft.com:8000/2018/11/14/MTgxMTE0ODM0Njc1MjMy.html"
],
"message": "转换成功",
"type": 1
}
复制代码
总结
永中office预览还是挺好用的,但是并不是完全适合用于所有场景,毕竟很多office文件都是内部文件,可能有关单位会比较在意这些。 多学多看多练,这里是刘子沐,我们下期,再见(还不知道有没有下期)。