SpringSpringBoot上传文件到七牛云
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:27
准备工作
maven
pom.xml添加七牛云的sdk依赖
<dependency>
<groupId>com.qiniu</groupId><br/>
<artifactId>qiniu-java-sdk</artifactId><br/>
<version>7.2.27</version><br/>
</dependency><br/>
配置项
七牛云上传必要的配置有:accessKey、secretKey、bucket
其中accessKey、secretKey在该网址可查看
bucket为你的存储空间名,如下:

application.yml配置
upload:
qiniu:
domain: 填你的域名<br/>
access-key: 你的accesskey<br/>
secret-key: 你的secretKey<br/>
bucket: 你的存储空间名,我这里为colablog<br/>
domain
上传配置类
@ConfigurationProperties@ComponentUploadProperties
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
- @author Johnson
- @date 2019/12/16/ 09:35:36
*/
@Component
@ConfigurationProperties(prefix = “upload”)
public class UploadProperties {
private Local local = new Local();
public Local getLocal() {
return local;
}
/**
- @author: Johnson
- @Date: 2019/12/16
- 本地上传配置
*/
public class Local {
…
}
private Qiniu qiniu = new Qiniu();
public Qiniu getQiniu() {
return qiniu;
}
/**
- @author: Johnson
- @Date: 2019/12/16
- 七牛云上传配置
*/
public class Qiniu {
/**
- 域名
*/
private String domain;
/**
- 从下面这个地址中获取accessKey和secretKey
- https://portal.qiniu.com/user/key
*/
private String accessKey;
private String secretKey;
/**
- 存储空间名
*/
private String bucket;
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getAccessKey() {
return accessKey;
}
public void setAccessKey(String accessKey) {
this.accessKey = accessKey;
}
public String getSecretKey() {
return secretKey;
}
public void setSecretKey(String secretKey) {
this.secretKey = secretKey;
}
public String getBucket() {
return bucket;
}
public void setBucket(String bucket) {
this.bucket = bucket;
}
}
}
七牛云上传接口和类
上传接口如下:
public interface UploadFile {
String uploadFile(MultipartFile file);
}
上传类
import cn.colablog.blogserver.utils.properties.UploadProperties;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.UUID;
/**
@author Johnson
@date 2019/12/14/ 17:20:16
上传文件到七牛云
*/
public class UploadFileQiniu implements UploadFile {
private UploadProperties.Qiniu properties;
//构造一个带指定Region对象的配置类
private Configuration cfg = new Configuration(Region.region2());
private UploadManager uploadManager= new UploadManager(cfg);
public UploadFileQiniu(UploadProperties.Qiniu properties) {
this.properties = properties;
}
/**
- @author: Johnson
*/
@Override
public String uploadFile(MultipartFile file) {
Auth auth = Auth.create(properties.getAccessKey(), properties.getSecretKey());
String token = auth.uploadToken(properties.getBucket());
try {
String originalFilename = file.getOriginalFilename();
// 文件后缀
String suffix = originalFilename.substring(originalFilename.lastIndexOf(“.”));
String fileKey = UUID.randomUUID().toString() + suffix;
Response response = uploadManager.put(file.getInputStream(), fileKey, token, null, null);
return properties.getDomain() + fileKey;
} catch (IOException e) {
e.printStackTrace();
}
return “error”;
}
}
RegionRegion.region2()Region
好了,准备工作已完成,现在就到调用了,调用类如下:
@RestController
@RequestMapping(“/upload”)
public class UploadFileController {
@Autowired
UploadProperties uploadProperties;
@PostMapping(“/img”)
public String uploadFileYun(MultipartFile file) {
// 上传到七牛云
UploadFile uploadFile = new UploadFileQiniu(uploadProperties.getQiniu());
return uploadFile.uploadFile(file);
}
}
是不是很简单呢?屁啊!简单个毛线,其实这个我是已经简化了,实际上在我的项目的结构是比这个复杂的。
总结Upload
@Component
三:配置文件我为什么会想到使用内部类来分割配置项呢?其实大家在编写一些类似功能的时候,都可以去参照一下别人的源码,当然,这里指的是大神的源码。因为我在写配置项的时候就想看看大神的配置项是怎么写的,就点进了rabbitmq的配置项。所以啊,看到了大神的代码是真的有长进的。
如果你需要查看更详细的官方文档,请点击下方链接:
最后:感谢大家的阅读,Thanks♪(・ω・)ノ
个人博客网址: https://colablog.cn/
如果我的文章帮助到您,可以关注我的微信公众号,第一时间分享文章给您

- 上一篇: Spring概况(一)
- 下一篇: Springmvc数据校验
相关文章
-
Spring概况(一)
Spring概况(一)
- 互联网
- 2026年04月04日
-
spring接收json字符串的两种方式
spring接收json字符串的两种方式
- 互联网
- 2026年04月04日
-
spring实战二之Bean的自动装配(非注解方式)
spring实战二之Bean的自动装配(非注解方式)
- 互联网
- 2026年04月04日
-
Springmvc数据校验
Springmvc数据校验
- 互联网
- 2026年04月04日
-
SpringMVC配置全局日期转换器,处理日期转换异常
SpringMVC配置全局日期转换器,处理日期转换异常
- 互联网
- 2026年04月04日
-
SpringMVC接收json数组对象
SpringMVC接收json数组对象
- 互联网
- 2026年04月04日






