目录
一、注册账号并创建密钥
二、创建存储空间bucket
三、手动添加文件到存储空间
四、代码中执行上传操作
我发现很多人还不知道对于第三方存储如何在代码中进行使用,而实际开发中很多场景下可能都会遇到。
所以我特别写一篇博客,目的一是方便自己使用,二是给还在学习中的朋友一点参考。
如果对你有帮助还请不吝点赞👍加收藏💕。
一、注册账号并创建密钥
如何使用,其实官网已经很详细了。这里带着大家一起熟悉一下,个人认为最主要的是熟悉!
官网地址:七牛云 | 一站式场景化智能音视频 APaaS
首先需要注册、登录账号
然后点击头像进入:个人中心 -> 密钥管理,
如果没有密钥创建一个密钥
下图可以看到我们创建的密钥。AK/SK即对应的AccessKey和SecretKey。
二、创建存储空间bucket
从官网产品中找到对象存储Kodo,可能未来网站会更新布局,一般情况下找不到就搜索就是了。
然后按照下图添加一个存储空间。目的是用来存放我们未来要上传的文件。
确定之后会提示如下信息,它会自动为我们创建的这个存储空间提供一个域名(有效期30天)。我们可以选择绑定自己的域名,这里暂时就用它提供的就好了。
然后就会看到生成的这个空间了。
到这里,我们就有了一个属于自己的存储空间啦!
三、手动添加文件到存储空间
点击进入当前创建的存储空间,然后选择文件管理,上传一个本地图片文件试试。
当然了,我们也可以选择拖动上传,以及创建文件夹来管理不同的资源。这里就不演示了。
然后点击详情,我们就可以看到文件的网络地址url。
我们试试访问这个地址,就可以看到刚刚上传的图片了。
四、代码中执行上传操作
好了,以上我们成功拥有了属于自己的对象存储空间了。
接下来,就是在代码里面实现上传操作了。
官网提供了各主流开发语言的SDK,我们可以根据官网提供的SDK,来完成功能操作。
如何在官网查询,我截了图如下:
💻下面,我给出我的代码示例,供各位参考:
@RestController
@RequestMapping("upload")
public class UploadController {
@Autowired
private QiniuUtils qiniuUtils;
@PostMapping
public Result upload(@RequestParam("image") MultipartFile file){
String fileName = UUID.randomUUID().toString() + "." + StringUtils.substringAfterLast(file.getOriginalFilename(), ".");
boolean upload = qiniuUtils.upload(file, fileName);
if (upload){
return Result.success(QiniuUtils.url + fileName);
}
return Result.fail(20001,"上传失败");
}
}
# 上传文件总的最大值
spring.servlet.multipart.max-request-size=20MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=2MB
@Component
public class QiniuUtils {
public static final String url = "https://go.sbps123.com/";
@Value("${qiniu.accessKey}")
private String accessKey;
@Value("${qiniu.accessSecretKey}")
private String accessSecretKey;
public boolean upload(MultipartFile file,String fileName){
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.huabei());
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String bucket = "test-home-1";
//默认不指定key的情况下,以文件内容的hash值作为文件名
try {
byte[] uploadBytes = file.getBytes();
Auth auth = Auth.create(accessKey, accessSecretKey);
String upToken = auth.uploadToken(bucket);
Response response = uploadManager.put(uploadBytes, fileName, upToken);
//解析上传成功的结果
DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
return true;
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
}
创作不易,感谢各位的支持与肯定!💕