• 七牛云存储+Google文件查看器 实现在线预览文档功能


    先看一下效果图:

    由于一直都是走的java路线,所以在我接触Google文件查看器之前,我是把文档上传到自己文件服务器,通过POI(http://poi.apache.org)去解析各类文档的,但是通过POI实现在线查看文档是一件很麻烦的事情,而且效果很不好。后来接触到了Google文件查看器(https://docs.google.com/viewer),只要提供一个文档的url就可以在线预览 16 种以上不同类型的文件。现在是不用在后台解析文档了,但是考虑到用户请求响应时间的问题,就把文档直接存到七牛云存储上,七牛云存储的好处这里就不介绍了,七牛的官网(http://www.qiniu.com)介绍的特别详细。上传文件请参考七牛官方文档(http://docs.qiniu.com)。下面是通过spring mvc实现在线预览word功能:

     1 /**
     2  * 七牛云存储控制器
     3  * 
     4  * @author bingoogol@sina.com
     5  */
     6 @Controller
     7 @RequestMapping("/qiniu")
     8 public class QiniuController {
     9     
    10     /**
    11      * 响应客户端的在线查看请求
    12      * @param bucketName 空间的名字
    13      * @param hash 文件的名称
    14      * @param model
    15      * @return
    16      */
    17     @RequestMapping(value = "/view/{bucketName}/{hash}", method = RequestMethod.GET)
    18     public String view(@PathVariable String bucketName, @PathVariable String hash, Model model) {
    19         model.addAttribute("fileUrl", getFileUrl(bucketName, hash));
    20         return "front/qiniu/view";
    21     }
    22     
    23     /**
    24      * 获取文件的url
    25      * @param bucketName 空间的名字
    26      * @param hash 文件的名称
    27      * @return
    28      */
    29     private String getFileUrl(String bucketName, String hash) {
    30         //在此之前先参考七牛官方文档配置公钥和密钥(我已经在初始化servlet里已经配置好了)
    31         Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);
    32         try {
    33             String baseUrl = URLUtils.makeBaseUrl(bucketName + ".u.qiniudn.com", hash);
    34             GetPolicy getPolicy = new GetPolicy();
    35             String fileUrl = getPolicy.makeRequest(baseUrl, mac);
    36             System.out.println("编码前:" + fileUrl);
    37             // Google 文档查看器要求url是经过iso-8859-1编码的
    38             fileUrl = URLEncoder.encode(fileUrl, "iso-8859-1");
    39             System.out.println("编码后:" + fileUrl);
    40             return fileUrl;
    41         } catch (Exception e) {
    42             e.printStackTrace();
    43         }
    44         return "";
    45     }
    46 }
    服务器端代码
     1 <%@ page pageEncoding="UTF-8"%>
     2 <!DOCTYPE html>
     3 <html>
     4 <head>
     5 <meta charset="utf-8">
     6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7 <link href="${pageContext.request.contextPath }/resources/common/css/bootstrap.css" rel="stylesheet" />
     8 <link href="${pageContext.request.contextPath }/resources/common/css/bootstrap-theme.css" rel="stylesheet" />
     9 <link href="${pageContext.request.contextPath }/resources/common/css/common.css" rel="stylesheet" />
    10 <title>七牛云存储练习</title>
    11 <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    12 <!--[if lt IE 9]>
    13     <script src="${pageContext.request.contextPath }/resources/common/js/html5shiv.js"></script>
    14     <script src="${pageContext.request.contextPath }/resources/common/js/respond.min.js"></script>
    15 <![endif]-->
    16 <style type="text/css">
    17 </style>
    18 </head>
    19 <body>
    20     <div class="container">
    21         <div class="panel panel-primary">
    22             <div class="panel-heading">
    23                 <h3 class="panel-title text-center">七牛云存储+Google文件查看器 实现在线预览文档</h3>
    24             </div>
    25             <div class="panel-body">
    26                 <!-- 在线预览文档主要是这一行实现的 -->
    27                 <iframe src="http://docs.google.com/viewer?url=${fileUrl }&embedded=true" width="100%" height="780" style="border: none;"></iframe>
    28             </div>
    29         </div>
    30     </div>
    31     <script type="text/javascript" src="${pageContext.request.contextPath }/resources/common/js/jquery-2.0.3.js"></script>
    32     <script type="text/javascript" src="${pageContext.request.contextPath }/resources/common/js/bootstrap.js"></script>
    33 </body>
    34 </html>
    前端代码
  • 相关阅读:
    Verilog HDL Test Bench
    配置maven仓库
    mac上卸载oracle jdk 1.8.0_31
    Mac系统安装jdk和maven
    ActiveX的AssemblyInof.cs文件 IObjectSafety  接口
    C#破解dll
    Web Api 转
    dynamic
    无焦点窗体(转载)
    Linux操作系统基础知识part4
  • 原文地址:https://www.cnblogs.com/bingoogol/p/preview-word.html
Copyright © 2020-2023  润新知