七牛云集成于springboot
在使用七牛云之前需要注册七牛云,最好需要有自己域名,因为七牛云只会提供一个月的测试域名。
七牛云的注册
-
登录七牛云
-
添加对象存储
-
看着填吧,第一个随便填,第二个随便选,最后配置地域即可,访问控制选择公开吧
-
给自己的七牛云绑定域名,也可使用一月的测试域名(不推荐)
-
去自己的域名解析的地方配置
如何配置域名的CNAME
七牛云集成于springboot
- 导入依赖
<!--七牛-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.7</version>
</dependency>
- 导入工具类
package com.mx.utils;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import lombok.extern.slf4j.Slf4j;
import java.io.FileInputStream;
@Slf4j
public class QiNiuUtil {
// 设置需要操作的账号的AK和SK
private static final String ACCESS_KEY = "RI_nUAhIlMElPW98QxQckQOBHPSZCwZCCZvqn4Tw";
private static final String SECRET_KEY = "BrdYIUx7BC4tOiFz_eNwlmMDupDzdywpI2JYobjd";
// 要上传的空间名称
private static final String BUCKETNAME = "mx2432544821";
// 密钥
private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
// 外链默认域名
private static final String DOMAIN = "qhixpzwpb.hn-bkt.clouddn.com";
/**
* 将图片上传到七牛云
*/
public static String uploadQNImg(FileInputStream file, String key) {
// 构造一个带指定Zone对象的配置类, 注意这里的Zone.zone0需要根据主机选择
UploadManager uploadManager = new UploadManager(new Configuration(Zone.zone2()));
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY );
// 根据命名空间生成的上传token
String path=null;
String token = auth.uploadToken(BUCKETNAME);
try{
// 上传图片文件
Response res = uploadManager.put(file, key, token, null, null);
if (!res.isOK()) {
throw new RuntimeException("上传七牛出错:" + res.toString());
}
// 解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(res.bodyString(), DefaultPutRet.class);
path = DOMAIN + "/" + putRet.key;
// 这个returnPath是获得到的外链地址,通过这个地址可以直接打开图片
}catch (QiniuException e){
e.printStackTrace();
}
return path;
}
}
- 调用工具类
String path = null;
// 获取文件的名称
String fileName = file.getOriginalFilename();
// 使用工具类根据上传文件生成唯一图片名称
String imgName = UUID.randomUUID().toString()+fileName;
if (!file.isEmpty()) {
//此处需要抛出异常
FileInputStream inputStream = (FileInputStream) file.getInputStream();
//由于有http才算远程链接 否则会请求当前ip和端口下的文件
path ="http://"+ QiNiuUtil.uploadQNImg(inputStream, imgName);
System.out.print("七牛云返回的图片链接:" + path);
}
tips:工具类中的Zone.zone2()需要按情况更改
UploadManager uploadManager = new UploadManager(new Configuration(Zone.zone2()));