项目中使用文件,图片,一般都会使用到云存储。要么就是自己搭建一个文件存储系统,要么用第三方的,七牛云的主要一个功能就是对象存储。示例实现了:java端文件上传、js端文件上传。

整体项目

imagepng

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源点

注意:本文归作者所有,未经作者允许,不得转载