概述

官方网站:http://api.yozocloud.cn/

优点:很便宜(一个域名一年3000),使用难易程度接近0,可单独在内网部署,可预览office套装:word、excel、ppf、pdf、图片、txt等很多文档类型;(使用:仅需要提供个域名下的文件下载接口,注册账号有500次预览体验)。

缺点:1.公网超过10M的文件预览很慢;2.安全:虽然提供水印、防复制参数,但是为了文件的安全,还是需自己开发文件下载IP白名单过滤器;(也提供直接请求文件预览地址接口,可以不暴露文件下载地址)。

例子:技术架构:springboot2+freemark2.26+tk.mybatis2.0.4+pagehelper1.2.12的文件上传下载、分页查询(Spring Boot 集成 MyBatis, 分页插件 PageHelper, 通用 Mapper

本博客包含三个模块:1.永中文件中专站的介绍;2.代码相关技术和开发流程介绍;3.相关pom依赖及配置介绍

代码下载地址:https://download.csdn.net/download/qq_26408545/12339351

代码预览地址:http://www.javakly.com:8080,自2020-04-19,7天内有效:效果如下

一:永中文件中专站的介绍

使用3步:1.去官网注册账号,并配置域名信息,获得key官网地址:https://api.yozocloud.cn

2.根据你得文件下载地址拼接预览地址:2种方式

  1. 第一方式:直接根据下载地址和key:拼接文件的预览地址:

如:http://dcsapi.com/?k=1744232&url=http://58.215.166.234/example/doc/doctest.docx

http://永中文件预览网址+?k=(域名对应的用户Key)+&url=(在线文档下载地址) +&isCopy=(是否防复制1是0否,可选) +&watermaerk=(水印文字内容,可选)

3个可选参数:1、watermark:String格式。针对单文档设置水印内容。2、isCopy:Integer格式(0否1是,默认为0。针对单文档设置是否防复制)。3、noCache:Boolean格式。是否强制重新转换(忽略缓存),true为强制重新转换,false为不强制重新转换。

第二种方式:用户通过api调用方式获取预览地址

请求地址:http://api.yozocloud.cn/getPreview?k=123456&url=http://abc.com/123.doc

说明:http://api网址/ getPreview +?k=(域名对应的用户Key)+&url=(在线文档地址) +&isCopy=(是否防复制1是0否,可选) +&watermaerk=(水印文字内容,可选)

获得json : errorcode=0代表请求成功,拿到data.data,可直接通过网址代开;

{"data":{"data":"https://p.dcsapi.com/view/preview/xxxxxxxx/"},"message":"操作成功","errorcode":0
}

二:代码相关技术和开发流程介绍

代码模板参考:https://github.com/abel533/MyBatis-Spring-Boot:Spring Boot 集成 MyBatis, 分页插件 PageHelper, 通用 Mapper

2.1 tk.mybatis的通用mapper实现逆向工程的生成

1.首先在数据库中建好表。

DROP TABLE IF EXISTS sys_files;
CREATE TABLE sys_files (file_id int(11) NOT NULL AUTO_INCREMENT comment '文件主键',file_name varchar(255) NOT NULL comment '文件名称',file_new_name varchar(255) NOT NULL comment '文件新名字',file_type varchar(500) NOT NULL comment '文件类型',file_url varchar(500) NOT NULL comment '文件下载地址',file_Show_url varchar(255) NOT NULL comment '文件预览地址',create_by varchar(64) default '' comment '创建者',create_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '创建时间',update_by varchar(64) default '' comment '更新者',update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '更新时间',PRIMARY KEY (file_id),INDEX(file_name),INDEX(file_type)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 comment '系统文件';

2.然后在pom中增加mybatis和通用mapper的依赖,以及generator的插件,generator配置见3。

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><dependencies><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><version>1.2.5.RELEASE</version></dependency></dependencies></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><configuration><configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-generator</artifactId><version>1.0.0</version></dependency></dependencies></plugin></plugins></build>

3.需要自己在utils中的MyMapper中继承tk.mybatis中的通用模板,添加要逆向生成的表。

package com.javakly.utils;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {//TODO//FIXME 特别注意,该接口不能被扫描到,否则会出错
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><properties resource="application-dev.properties"/><context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><plugin type="tk.mybatis.mapper.generator.MapperPlugin"><property name="mappers" value="com.javakly.utils.MyMapper"/></plugin><jdbcConnection driverClass="${spring.datasource.driver-class-name}"connectionURL="${spring.datasource.url}"userId="${spring.datasource.username}"password="${spring.datasource.password}"></jdbcConnection><javaModelGenerator targetPackage="com.javakly.model" targetProject="src/main/java"/><sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/><javaClientGenerator targetPackage="com.javakly.mapper" targetProject="src/main/java"type="XMLMAPPER"/><table tableName="sys_files"><!--mysql 配置--><generatedKey column="file_id" sqlStatement="Mysql" identity="true"/><!--oracle 配置--><!--<generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>--></table></context>
</generatorConfiguration>

4.在myeclipse运行mybatis-generator:generate命令(myeclipse自带mvn 前缀)

2.2springboot整合FreeMarker配置

server.port=8080
#context-path第一次请求的地址
server.context-path=/files
server.session.timeout=600000
server.tomcat.uri-encoding=UTF-8
server.tomcat.max-threads=800
server.tomcat.min-spare-threads=30#文件大小
spring.servlet.multipart.max-file-size=100000000
spring.servlet.multipart.max-request-size=100000000# 启用的application文件
spring.profiles.active=dev
# 表示访问该路径时代表请求静态资源,用户可以直接访问该请求路径中的静态资源
spring.mvc.static-path-pattern=/static/**
spring.mvc.async.request-timeout=60000
########################################################
###FREEMARKER (FreeMarkerAutoConfiguration)
########################################################
spring.freemarker.allow-request-override=false
#本机调试时,配置项template_update_delay=0,这样就关闭了模板缓存。注意线上环境要开启缓存
spring.freemarker.cache=false
spring.freemarker.settings.template_update_delay=0
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
spring.freemarker.prefix=
#若在freemarker获取request对象,在spring boot 在application.properties可以这么配置
spring.freemarker.request-context-attribute=request
#spring.freemarker.settings.*=
spring.freemarker.suffix=.ftl
#template-loader-path表示所有的模板文件都放在该目录下
spring.freemarker.template-loader-path=classpath\:/templates/
#spring.freemarker.view-names= #whitelistofviewnamesthatcanberesolved#static-locations可以自定义静态资源路径,不过会覆盖springboot默认路径
#在这个最末尾的file:${web.upload-path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量
#spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
spring.freemarker.settings.datetime_format=yyyy-MM-dd
#freemarker空值不报异常
spring.freemarker.settings.classic_compatible=true

2​​​​​​.3PageHelper配置和配合通用mapper进行查询

# mybatis 配置
mybatis.type-aliases-package=com.javakly.model
mybatis.mapper-locations=classpath:mapper/*.xml
# tk.mapper配置
mapper.mappers=com.javakly.utils.MyMapper
mapper.not-empty=false
mapper.identity=MYSQL
# pagehelper 分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count\=countSql

pageHelper使用2中方式

方式1:mybatis通用查询模式:自己写查询条件

public List<SysFiles> getAll(SysFiles sysFiles) {if (sysFiles.getPage() != null && sysFiles.getRows() != null) {PageHelper.startPage(sysFiles.getPage(), sysFiles.getRows());}Example example = new Example(SysFiles.class);Example.Criteria criteria = example.createCriteria();if (!StringUtils.isEmpty(sysFiles.getFileName())) {criteria.andLike("file_name", "%" + sysFiles.getFileName() + "%");}if (!StringUtils.isEmpty(sysFiles.getFileType())) {criteria.andLike("file_type", "%" + sysFiles.getFileType() + "%");}return sysFilesMapper.selectByExample(example);}

方式2:通过Weekend包装查询,并通过注解映射字段写查询条件(就是和类名::获取方法表达式)

public List<SysFiles> getAllByWeekend(SysFiles sysFiles) {if (sysFiles.getPage() != null && sysFiles.getRows() != null) {PageHelper.startPage(sysFiles.getPage(), sysFiles.getRows());}Weekend<SysFiles> weekend = Weekend.of(SysFiles.class);WeekendCriteria<SysFiles, Object> criteria = weekend.weekendCriteria();if (!StringUtils.isEmpty(sysFiles.getFileName())) {criteria.andLike(SysFiles::getFileName, "%" + sysFiles.getFileName() + "%");}if (!StringUtils.isEmpty(sysFiles.getFileType())) {criteria.andLike(SysFiles::getFileType, "%" + sysFiles.getFileType() + "%");}return sysFilesMapper.selectByExample(weekend);}

 三、本文的pom依赖| MyBatis和通用Mapper及PageHelper jar版本(2020-4-19都是接近最新的版本依赖)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.6.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>com.javakly</groupId><artifactId>officeOnlineYZ</artifactId><version>0.0.1-SNAPSHOT</version><name>officeOnlineYZ</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><mybatis.spring.version>2.1.1</mybatis.spring.version><mapper.starter.version>2.0.4</mapper.starter.version><pagehelper.starter.version>1.2.12</pagehelper.starter.version><druid.version>1.1.10</druid.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!--freemarker --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><!--jackson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-joda</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.module</groupId><artifactId>jackson-module-parameter-names</artifactId></dependency><!--mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.version}</version></dependency><!--mapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>${mapper.starter.version}</version></dependency><!--pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper.starter.version}</version><exclusions><exclusion><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></exclusion></exclusions></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><dependencies><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><version>1.2.5.RELEASE</version></dependency></dependencies></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><configuration><configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-generator</artifactId><version>1.0.0</version></dependency></dependencies></plugin></plugins></build></project>

Office在线预览-永中相关推荐

  1. office 在线预览

    office 在线预览 永中office dcs xdocin Spire系列 officeweb365 wps在线预览 idocv onlyoffice office online serve nt ...

  2. php 永中office在线预览

    永中office在我的项目中主要的应用目的是在线预览office文件. 至于为啥不用微软,不知道是不是我的姿势不对,大佬也说在国内可能出现无法转换(误). 复制代码 准备 永中office DCS文档 ...

  3. office在线预览哪家强?不能播放ppt动画,不能监听翻页?

    前言 众所周知,word.excel.ppt 和 pdf 文件在线预览有很多解决方案,但大多无法播放 ppt 动画,或者功能非常单一.这不,最近产品经理闭关修炼三天,提出了如下需求: 监听文档翻页,根 ...

  4. office转pdf实现office在线预览(aspose)

    office转pdf实现office在线预览(aspose) 1. jar包地址 2. 将jar包安装到本地 3. pom文件添加依赖 4. license.xml ① license.xml存放路径 ...

  5. office在线预览 word在线预览 .net在线预览 文件在线浏览接口

    office在线预览 word在线预览 excel在线预览 文件浏览接口服务 支持移动端浏览,只要能使用浏览器上网都可以使用,不需要安装任何第三方工具. 1.word在线预览 excel在线预览,.n ...

  6. Office在线预览及PDF在线预览的实现方式大集合

    一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免 ...

  7. Office在线预览及PDF在线预览的实现方式

    原文链接:http://www.officeweb365.com/officetoview.html 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office ...

  8. Office在线预览—PPT专场

    前言 当下是一个软件.小程序.APP等遍地的时代,互联网已经深入到我们工作.生活的方方面面.只要是企业,总有移动办公需求,出差在外,不方便电脑端查看,文件太大,担心手机内存等. 在线预览可以让我们不经 ...

  9. 【玩转云函数】腾讯云云函数结合金山文档打造轻量级 Office 在线预览服务

    以下内容来自「玩转腾讯云」用户原创文章,已获得授权. 本文介绍下如何使用云函数来实现 Office 办公文件的预览 01. 前言 曾几何时,文档预览曾经很麻烦,小公司需要购买服务器,自行搭建文件服务器 ...

  10. 服务器系统安装office注意,Office在线预览服务OfficeOnlineServer2017(OOS)安装及常见问题...

    服务器需求:Windows Server 2016 R2 或更高,需要两台,一台做域控服务器,一台主服务器 配置要求:域控服务器随意,主服务器最低8G内存,4核CPU,这个配置经常吃满,有条件的越高越 ...

最新文章

  1. 「2017 山东一轮集训 Day5」距离
  2. 9 个重量级的云计算(PaaS)平台
  3. Python 各种运行错误(如:SyntaxError :invalid syntax)
  4. flask 项目基本框架的搭建
  5. CRM WebClient UI的external service功能介绍
  6. 读《程序员修炼之道——从小工到专家》
  7. samba、nginx服务
  8. rhel6mysql管理_RHEL 6平台MySQL数据库服务器的安装方法
  9. 2020年中国河蟹养殖产业市场现状分析,江苏省育苗量、产量与捕捞量全国第一「图」
  10. 《凤凰架构》读后感 - 演进中的架构
  11. 关闭MyEclipse右侧工具栏
  12. 计算机领域伟大成就,十五863计划信息技术领域重大科技工作成就
  13. 一篇文章教会你利用Python网络爬虫抓取王者荣耀图片
  14. bio 生信博主网站 blog
  15. os的概念,基本特征
  16. 民生保险“链”接链家地产,2018向家告白赢取爱疯X
  17. 进程切换之context_switch详解
  18. STM32H750使用Jlink烧录QSPI flash配置
  19. IDE和ACHI区别
  20. 弱电线缆选型及用量计算方法

热门文章

  1. uni-app判断运行机型动态修改样式
  2. 斐讯K3c基于frp内网穿透
  3. 变异记录文件格式 vcf
  4. kasp技术原理_KASP——基因分型研究者指尖跳跃的珠链
  5. 计算机应用 课件 .doc,《计算机应用基础》课件36915.doc
  6. 简单查询多个D速物流,并分析未签收延误的单号
  7. eda课程设计,求救!!!!!!!!
  8. 深入浅出之WPF基础教程
  9. 第四章 实验三IBM MQ测试高可用,使用连接工厂(多地址连接方式)
  10. 【显卡天梯图】2014年最新显卡天梯图 – 【迄今最全系列显卡】