1.引入七牛云依赖
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.11.0</version>
</dependency>
2.获取七牛云密钥
获取AK和SK
在application文件中配置七牛云密钥
填自己的AK和SK 配置自己的空间名称 以及自己的访问域名
如果设置了cdn加速域名url则为自己设置的域名 如果没设置则是七牛云提供的测试域名
3.配置七牛云图片上传类
package com.txd.schoolhelp.util;
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 org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
@Component
public class QiNiuUtils {
@Value("${QiNiu.AccessKey}")
private String AccessKey;
@Value("${QiNiu.SecretKey}")
private String SecretKey;
@Value("${QiNiu.BucketName}")
private String BucketName;
@Value("${QiNiu.url}")
private String url;
/**
* 上传图片到七牛云
* @param multipartFile
* @return
*/
public String uploadImageQiniu(MultipartFile multipartFile){
try {
//1、获取文件上传的流
byte[] fileBytes = multipartFile.getBytes();
//2、创建日期目录分隔
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
String datePath = dateFormat.format(new Date());
//3、获取文件名
String originalFilename = multipartFile.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
String filename = datePath+"/"+UUID.randomUUID().toString().replace("-", "")+ suffix;
//4.构造一个带指定 Region 对象的配置类
//Region根据自己的对象空间的地址选
Configuration cfg = new Configuration(Region.region2());
UploadManager uploadManager = new UploadManager(cfg);
//5.获取七牛云提供的 token
Auth auth = Auth.create(AccessKey, SecretKey);
String upToken = auth.uploadToken(BucketName);
uploadManager.put(fileBytes, filename, upToken);
return url+"/"+filename;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
4.实现上传
@Autowired
private QiNiuUtils qiNiuUtils;
@PostMapping("/fileUpload")
@ApiOperation(value = "上传下载图片")
public String filesUpload(@RequestParam("fileName") MultipartFile file){
String filename = file.getOriginalFilename();
//判断文件格式是否为图片
if (filename.endsWith(".jpg") || filename.endsWith(".png") || filename.endsWith(".jepg")){
String fileUrl = qiNiuUtils.uploadImageQiniu(file);
return fileUrl;
}
throw new TxdException(500,"文件格式错误");
}
上传后返回文件链接
5.问题(返回的url打开404)
查看是否将自己的存储空间设置为公开
如果为私有 外链信息为