添加maven依赖
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.7.0, 7.7.99]</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
设置七牛云秘钥等信息
shop.qiniu.accessKey=MfHnMX1Alf-SvT190iJ03ThcwJtEVM66EoQ12Yob
shop.qiniu.SecretKey=Dfz_w8iAwo7FFNgAj4u79CB8cU3If2cgwE9j1FyL
shop.qiniu.bucketName=mall4four
shop.qiniu.path=http://rt5ccg45y.hn-bkt.clouddn.com
添加七牛云配置文件
package com.jiang.demo.util;
import com.google.gson.Gson;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.util.UUID;
@Component
@Data
@PropertySource("classpath:shop.properties")
public class QiniuUtil {
@Value("${shop.qiniu.accessKey}")
String accessKey; //公钥
@Value("${shop.qiniu.SecretKey}")
String SecretKey; //私钥
@Value("${shop.qiniu.bucketName}")
String bucketName; // 存储空间
@Value("${shop.qiniu.path} ")
String path; // 域名
/**
* @param file 前端传来的图片
* @return 图片的访问路径
*/
public String upload(MultipartFile file){
System.out.println(accessKey);
// 生成文件名
String fileName = getRandomImgName(file.getOriginalFilename());
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.huanan()); //根据自己的对象空间的地址选(华东)
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//默认不指定key的情况下,以文件内容的hash值作为文件名
try {
byte[] uploadBytes = file.getBytes();
Auth auth = Auth.create(accessKey, SecretKey);
String upToken = auth.uploadToken(bucketName);
Response response = uploadManager.put(uploadBytes, fileName , upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
return path + "/" +fileName;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**
* @Description: 生成唯一图片名称
* @Param: fileName
* @return: 云服务器fileName
*/
public static String getRandomImgName(String fileName) {
int index = fileName.lastIndexOf(".");
if (fileName.isEmpty() || index == -1){
throw new IllegalArgumentException();
}
// 获取文件后缀
String suffix = fileName.substring(index).toLowerCase();
// 生成UUID
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
// 拼接新的名称
return uuid + suffix;
}
}
@PropertySource("classpath:shop.properties")
这个注解的作用是能够去扫描配置文件。