之前因为项目需要,需要用到文件在线预览功能,上网查了后发现一个好用的在线预览——永中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. php 长连接心跳_支持gRPC长链接,深度解读Nacos2.0架构设计及新模型
  2. C语言中regex_error,为什么这个C 11 std :: regex示例抛出一个regex_error异常?
  3. WPF/Silverlight深度解决方案:(十六)传值实现
  4. 实现java多线程的3种方式,99%人没用过第3种
  5. Dagoin之modelform组件
  6. sql decimal 转string_音频怎么转文字?这个软件带你体验飞一般的感觉
  7. 一个函数要使用另一个函数中的数据
  8. IOS UIColor 自定义颜色
  9. Converse3D 引擎介绍
  10. The specified JRE installation does not exist异常的原因和解决办法
  11. 语音识别首次全平台比拼,讯飞依图BAT各家算法差异巨大
  12. 数据权限设计研究-行数据权限
  13. [GIS原理] 10.1 空间统计描述(描述性分析、探索性数据分析)、空间自相关分析 - QQ图、权重矩阵、Moran'sl、G统计量
  14. nls_lang环境变量linux设置,设置NLS_LANG环境变量
  15. laravel-集合对象的销毁forget,重组values(),pluck ()方法
  16. 众昂矿业:萤石因奇特的“荧光效应”而得名
  17. Linux下用rar压缩和解压文件
  18. 一个简易版的新闻应用(同时兼容手机和平板)
  19. Android模拟器检测体系梳理,kotlin入门
  20. 使用Snoopy类实现微信图文抓取功能

热门文章

  1. ams1117 lm317 对比_三种典型的基于AMS1117稳压IC的5v转3.3v电路-电路图讲解-电子技术方案...
  2. ESC/POS协议打印机工具类(java)
  3. 红米note4android,红米Note4深度评测
  4. Java实现“斐波那契数列”的方法(循环,递归,优化递归)
  5. c51单片机学习笔记二
  6. H264编码基础概念+格式分析
  7. Quartz的CronTrigger
  8. java google 离线地图开发_如何发布google离线地图及二次开发API
  9. 因果信号的傅里叶变换_信号傅里叶变换系列文章(1):傅里叶级数、傅里叶系数以及傅里叶变换...
  10. python3 下 tkinter 的网页监控小程序