之前因为项目需要,需要用到文件在线预览功能,上网查了后发现一个好用的在线预览——永中office云预览
永中office云预览主要是通过客户端上传文件到永中自己的服务器,之后服务器会返回给客户端一段json体的值,解析json里面值后拼接url跳转到永中自己的预览服务器里面,这样就实现在线预览功能。
1、首先导入依赖jar,是生成签名的jar
链接:https://pan.baidu.com/s/13PyAyPIMz4PYLDab7Ue6tg
提取码:7kam
生成签名sign的方法,map里面转递的参数为url上面拼接的参数,如上传文件的url上需要拼接appId,sign(除外),则就传递appId进来,sign除外,如预览文件的url上需要拼接appId,fileVersionId,sign(除外),则传递appId,fileVersionId进来。

/*** 获取签名信息* @param map 参数k-v* @return 签名* @throws Exception 异常*/String getSign(Map<String,String[]> map) throws Exception {map.put("appId",new String[]{this.appId});AppAuthenticator authenticator=new UaaAppAuthenticator(UaaConstant.SIGN,null,UaaConstant.APPID);String sign = authenticator.generateSign(this.appKey, map);return sign;}

2、上传要预览的文件到永中的服务器,在这里我用的是java的HttpURLConnection来上传文件

//生成signString sign = getSign(new HashMap<>());File file = new File("E:\\新建 Microsoft Word 文档.docx");String urlString = httpUrl + "file/upload?appId=" + appId + "&sign=" + sign;URL url = new URL(urlString);HttpURLConnection conn = (HttpURLConnection) url.openConnection();String Boundary = UUID.randomUUID().toString(); // 文件边界// 1.开启Http连接conn.setConnectTimeout(10 * 1000);conn.setDoOutput(true); // 允许输出// 2.Http请求行/头conn.setRequestMethod("POST");conn.setRequestProperty("Charset", "utf-8");conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + Boundary);// 3.Http请求体DataOutputStream out = new DataOutputStream(conn.getOutputStream());out.writeUTF("--" + Boundary + "\r\n"+ "Content-Disposition: form-data; name=file; filename=" + file.getName() + "\r\n"+ "Content-Type: application/octet-stream; charset=utf-8" + "\r\n\r\n");InputStream in = new FileInputStream(file);byte[] b = new byte[1024];int l = 0;while ((l = in.read(b)) != -1) out.write(b, 0, l); // 写入文件out.writeUTF("\r\n--" + Boundary + "--\r\n");out.flush();out.close();in.close();

3,获取响应码和响应体,获取fileVersionId跳转到预览服务器

int responseCode = conn.getResponseCode();if (responseCode == 200) {// 4.Http响应BufferedReader bf = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));String line = null;StringBuffer stringBuffer = new StringBuffer();while ((line = bf.readLine()) != null) {System.out.println(line);stringBuffer.append(line);}JSONObject jsonObject = JSONObject.parseObject(stringBuffer.toString());JSONObject data = jsonObject.getJSONObject("data");if (!"".equals(data.toJSONString()) && !"".equals(data.getString("fileVersionId"))) {//获取返回的文件idString fileVersionId = data.getString("fileVersionId");//获取签名信息Map<String, String[]> paramMap = new HashMap<>();paramMap.put("fileVersionId", new String[]{fileVersionId});String s = getSign(paramMap);return "redirect:" + this.viewFileHttpUrl + "view/file?appId=" + this.appId + "&fileVersionId=" + fileVersionId + "&sign=" + s;}}

配置文件里面的值:

appId=yozobCmWHU365448
appKey=7b1c522e15bc1e136da5404ad533
httpUrl=http://dmc.yozocloud.cn/api/
viewFileHttpUrl=http://eic.yozocloud.cn/api/

获取配置文件值

 @Value("${appId}")String appId;@Value("${appKey}")String appKey;@Value("${httpUrl}")String httpUrl;@Value("${viewFileHttpUrl}")String viewFileHttpUrl;

用office打开效果

预览效果

永中office之在线预览(java版)相关推荐

  1. 永中office之在线编辑(java版)

    永中office在线编辑基于永中WebOffice的文档在线编辑能力,通过此能力,用户可以在web端直接编辑office,并且还是实时保存的,为操作office提供了许多便利. 在线编辑是通过自己搭建 ...

  2. 利用微软的Office Online在线预览播放Office文档,无工具栏

    利用微软的Office Online在线预览播放Office文档 通过微软的在线预览URL链接可以直接打开在线PPT文档如下 https://view.officeapps.live.com/op/v ...

  3. Office Online 在线预览

    首先,office的在线预览无疑问是在不用下载的前提下通过浏览器直接进行浏览,所以针对浏览器的版本不同系统是有要求的,具体的浏览器支持情况可以查看官方提供的文档:点我查看 利用office onlin ...

  4. C#中mvc模式在线预览Office(word 可编辑、txt)文件

    /// <summary>/// 在线预览Office文件/// </summary>public class OfficeViewController : Controlle ...

  5. office文件在线预览

    需求背景 最近学妹她们那边有一个项目类似在线网盘的东西,支持文件上传保存.其中除了普通text文本以外,还有如office文件word.excel.ppt等文件,并且提供在线预览的功能.用户能够在线预 ...

  6. web office apps 在线预览实践

    摘要 在一些项目中需要在线预览office文档,包括word,excel,ppt等.达到预览文档的目的有很多方法,可以看我之前总结,在线预览的n种方案: [Asp.net]常见word,excel,p ...

  7. office ppt在线预览

    我项目中是直接用iframe显示: <iframe id="iframe_src"  scrolling="auto"  width="100% ...

  8. office文件在线预览

    项目场景:后台管理项目中需要展示world.excel等文件 问题描述 前端预览office插件大多数都是收费的,比如:XDOC文档预览云服务(有试用期) 需要一个免费的且兼容各种文件格式的方法 解决 ...

  9. 利用微软的Office Online在线预览Office文档

    一个url就可以访问了: https://view.officeapps.live.com/op/view.aspx?src=文件地址 这个文件地址需满足以下几个条件: (1)在浏览器是可以访问的: ...

  10. vue中使用Vue-pdf在线预览

    下载 npm i vue-pdf 引入(在所需要预览的页面) <script>import axios from 'axios'import pdf from 'vue-pdf'impor ...

最新文章

  1. 合成复用原则java实例_第7节 合成复用原则
  2. C++primer: 引用与 const 引用
  3. mysql整点抖动_MySQL 5.5 大量数据插入出现的抖动问题 及 解决方法
  4. python中回车怎么表示_如何在python中使用读取行仅拆分回车符?
  5. Flink State 有可能代替数据库吗?
  6. [导入]SQL Injection cheat sheet
  7. SpringBoot02——A Simple SpringBoot ProjectHot Deployment
  8. 《CLR via C#》读书笔记 之 泛型
  9. 玩转VIM编辑器-vim的命令行
  10. H264视频编码原理
  11. 单片机(嵌入式)程序分层架构
  12. 战略管理学习---第2章 战略目标
  13. 剑指Offer 46.把数字翻译成字符串(Python)
  14. 物联网安全与安全分析
  15. Linux软RAID换硬盘
  16. 对C++一脸懵逼却又无比热爱的第一篇
  17. web防火墙和waf防火墙的区别
  18. 安卓 OpenGLES 魔方
  19. JavaSE学习摘要
  20. CF4A Watermelon(洛谷水题记)

热门文章

  1. android模拟机型,(安卓)牛X分身 — 支持位置模拟机型修改
  2. 新商用密码产品认证梳理——检测和认证机构篇
  3. ORCAD学习系列之一 ORCAD元器件库的建立
  4. AVR单片机学习笔记
  5. 【转载】回首大学四年,一个电工对大学课程的见解
  6. 在Android的Termux超级终端下进行内网穿透
  7. linux下安装杰奇2.4,实现关关采集器远程采集详细教程
  8. Python 实现控制一阶惯性系统
  9. 无线路由器实现局域网内中继功能
  10. 耗时162天,从华为外包5k转岗正式员工15k,经历的心酸只有自己知道