项目中使用文件,图片,一般都会使用到云存储。要么就是自己搭建一个文件存储系统,要么用第三方的,七牛云的主要一个功能就是对象存储。示例实现了:java端文件上传、js端文件上传。
整体项目
pom配置
<?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 http://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.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cimu</groupId>
<artifactId>chapter_qiniu</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>chapter_qiniu</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<qiniu.version>[7.2.0, 7.2.99]</qiniu.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-freemarker</artifactId>
</dependency>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>${qiniu.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.23</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
核心代码
QiNiuProperties:为七牛云配置需要的字段
@Data
@Component
@ConfigurationProperties(prefix = "qiniu")
public class QiNiuProperties implements Serializable {
private static final long serialVersionUID = -4680088542578380398L;
//七牛绑定的域名
private String domain;
//七牛路径前缀
private String prefix;
//七牛ACCESS_KEY
private String accessKey;
//七牛SECRET_KEY
private String secretKey;
//七牛存储空间名
private String bucketName;
}
QiniuServiceImpl:实现了七牛云的一些方法,包括上传,获取token,上传回调处理等方法;这里只列出方法。
@Service
@Slf4j
public class QiniuServiceImpl implements QiniuService {
/**
* 上传文件 * @param data byte[]
* @param path 文件key
* @return String
*/String upload(byte[] data, String path) ;
/**
* 上传文件 * @param inputStream InputStream
* @param path 文件key
* @return String
*/String upload(InputStream inputStream, String path);
/**
* 上传自定义后缀 * @param data byte[]
* @param suffix 后缀
* @return String
*/String uploadSuffix(byte[] data, String suffix);
/**
* 上传自定义后缀 * @param inputStream InputStream
* @param suffix 后缀
* @return String
*/String uploadSuffix(InputStream inputStream, String suffix);
/**
* 获取文件访问地址 * @param fileName 文件名
* @return String 文件地址
*/String getFileUrl(String fileName);
/**
* 获取token,前端上传使用 * @return
*/
String getToken();
/**
* 上传成功回调处理 * * @param authorization 授权
* @param paramString 回调值
* @return boolean true表示成功;false表示失败
*/UploadDto fileCallback(String authorization, String paramString);
}
qiniu.js:为处理前端的js,实现了文件上传
libs:下面包括第三方库js
templates:下面为html文件
配置
application.properties:为一些freemarker的配置和七牛云的配置
spring.freemarker.template-loader-path=classpath:/templates
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.request-context-attribute=request
spring.freemarker.suffix=.html
qiniu.domain=
qiniu.prefix=
qiniu.accessKey=
qiniu.secretKey=
qiniu.bucketName=
效果
在浏览器中输入以下地址
http://127.0.0.1:8080/qiniu/index
本文为博主原创文章,未经博主允许不得转载。
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载