先看一下效果图:
由于一直都是走的java路线,所以在我接触Google文件查看器之前,我是把文档上传到自己文件服务器,通过POI()去解析各类文档的,但是通过POI实现在线查看文档是一件很麻烦的事情,而且效果很不好。后来接触到了Google文件查看器(),只要提供一个文档的url就可以在线预览 16 种以上不同类型的文件。现在是不用在后台解析文档了,但是考虑到用户请求响应时间的问题,就把文档直接存到七牛云存储上,七牛云存储的好处这里就不介绍了,七牛的官网()介绍的特别详细。上传文件请参考七牛官方文档()。下面是通过spring mvc实现在线预览word功能:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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 model15 * @return16 */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 * 获取文件的url25 * @param bucketName 空间的名字26 * @param hash 文件的名称27 * @return28 */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 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 <%@ page pageEncoding="UTF-8"%> 2 3 4 5 6 7 8 9 10七牛云存储练习 11 12 16 18 19 202131 32 33 3422302325七牛云存储+Google文件查看器 实现在线预览文档
2426 27 2829