SpringBoot七牛上传图片Demo

SpringBoot真是小巧快捷!于是用之前写的工具类做了个图片上传Demo,功能单一,网站也比较简陋,等学完微信API之后会逐步进行完善。
网站入口img.d3rc.top

SpringBoot

  1. 没有使用数据库,而是用Map做了数据缓存(比较轻便,也没什么重要数据)
  2. 表现层使用了Thymeleaf模板引擎(感觉还是freemaker符合逻辑)
  3. 入参为POST请求的MultipartFile,文件名使用的是原文件名

使用Maven引入七牛SDK

1
2
3
4
5
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0, 7.2.99]</version>
</dependency>

在项目中新建此工具类,表现层调用方法即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public class QiniuUtil {
//设置好账号的ACCESS_KEY和SECRET_KEY
private static String ACCESS_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
private static String SECRET_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
//设置好空间的域名,我用的是免费空间
private static String DOMAIN_PATH = "http://xxxxxx127.bkt.clouddn.com/";
//要上传的空间
private static String bucketname = "xxxc";
//密钥配置
private static Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//使用SDK中指定上传Zone的第二种方式: 自动识别要上传的空间(bucket)的存储区域是华东、华北、华南。
private static Zone z = Zone.autoZone();
private static Configuration c = new Configuration(z);
//创建上传对象
private static UploadManager uploadManager = new UploadManager(c);
//简单上传,使用默认策略,只需要设置上传的空间名就可以了
public static String getUpToken() {
return auth.uploadToken(bucketname);
}
//入参为文件字节数组,文件名
public static String uploadAndReturnUrl(byte[] data,String fileName){
try {
//调用put方法上传
uploadManager.put(data, fileName, getUpToken());
//没有异常说明上传成功,返回URL
return DOMAIN_PATH + fileName;
} catch (QiniuException e) {
Response r = e.response;
// 请求失败时打印的异常的信息
System.out.println(r.toString());
try {
//响应的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
//ignore
}
}
return null;
}
//入参为文件路径,文件名
public static String uploadAndReturnUrl(String filePath,String fileName){
try {
//调用put方法上传
uploadManager.put(filePath, fileName, getUpToken());
//没有异常说明上传成功,返回URL
return DOMAIN_PATH + fileName;
} catch (QiniuException e) {
Response r = e.response;
// 请求失败时打印的异常的信息
System.out.println(r.toString());
try {
//响应的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
//ignore
}
}
return null;
}
}

还可以继续扩展,等需求到了就会更新~
不足之处希望各位指正