从零玩转文件上传之七牛云-qiniufileupload
前言
七牛云注册免费赠送这么多可用的套餐白嫖党怎能错过????
Show Time
进入控制台找到对象存储
根据图片来一步步走即可
创建完毕后会弹出一个是否绑定域名?
我们先整不绑定域名的(测试域名30天过期),后面再说绑定的
随便上传个文件看看能不能访问
进入 空间设置 把私有改为公有访问就可以进行访问了
测试地址: http://r9d51yx78.hd-bkt.clouddn.com/TERD5659[1]-6fff19b5e08d4d19a2b1b2d9ceffe8ea.jpeg
我们进行打开自己的密钥保存一份
代码操作文件上传
<!--引入七牛云的依赖-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.7.0, 7.7.99]</version>
</dependency>
七牛云文件上传配置文件
import com.qiniu.storage.Region;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @program: yangbuyi_video
* @ClassName: qiniuOssConstant
* @author: Yang buyi
* @desc: |七牛云文件上传配置
**/
@Data
@Component
@ConfigurationProperties(prefix = "qiniu")
public class QiniuOssProperties {
//声明机房的区域 默认 华东
private Region region = Region.huadong();
//AK
private String accessKey = "ak";
//SK
private String secretKey = "sk";
//空间名称
private String bucket = "前面设置的空间名称";
//请求地址 前面创建免费送的测试域名
private String url = "http://r9d51yx78.hd-bkt.clouddn.com/";
}
创建测试类
// Create By Yang Shuai,Date 2022/3/27:02:02
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
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 org.junit.Test;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.*;
public class QinUtil {
QiniuOssProperties qiniuOssProperties = new QiniuOssProperties();
@Test
public void t1() {
File file = new File("/Users/yangbuyi/Documents/图片/Surface Stusio default wallpaper.png");
//构造一个带指定Region对象的配置类
Configuration cfg = new Configuration(qiniuOssProperties.getRegion());
//创建文件上传的管理器
UploadManager uploadManager = new UploadManager(cfg);
//默认不指定key的情况下,以文件内容的hash值作为文件名
String fileName = file.getName();
//统一文件到日文件夹
String key = DateUtil.today() + "/" + IdUtil.simpleUUID() + "-" + "yangbuyiya";
try {
byte[] uploadBytes = File2byte(file);
// 获取文件流
InputStream input = new ByteArrayInputStream(uploadBytes);
//创建一个认证的对象
Auth auth = Auth.create(qiniuOssProperties.getAccessKey(), qiniuOssProperties.getSecretKey());
//获取token
String upToken = auth.uploadToken(qiniuOssProperties.getBucket());
// 需传递token进行文件上传
Response response = uploadManager.put(input, key, upToken, null, null);
//解析上传成功的结果
DefaultPutRet defaultPutRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
// 返回路径
// qiniuOssProperties.getUrl() + defaultPutRet.hash
defaultPutRet.key = qiniuOssProperties.getUrl() + defaultPutRet.key;
defaultPutRet.hash = qiniuOssProperties.getUrl() + defaultPutRet.hash;
System.out.println(JSON.toJSONString(defaultPutRet));
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static byte[] File2byte(File tradeFile){
byte[] buffer = null;
try
{
FileInputStream fis = new FileInputStream(tradeFile);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1)
{
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return buffer;
}
}
文件上传成功
使用key来进行访问
{
"hash":"http://r9d51yx78.hd-bkt.clouddn.com/llSfj5c2gQTtjMH8wpEZIV8pHV6P",
"key":"http://r9d51yx78.hd-bkt.clouddn.com/2022-03-27/f63231bef87f44e382f55027690e21ba-yangbuyiya"
}
测试域名(会过期)
http://r9d51yx78.hd-bkt.clouddn.com/2022-03-27/f63231bef87f44e382f55027690e21ba-yangbuyiya
使用自定义域名
进入对象存储-》域名管理
https直接点击ssl管理里面申请即可,不进行赘述.
加速域名随便填写二级域名
例如: qiniu.yby6.com
源站配置: 默认不动即可
缓存配置: (可选) 自定义->推荐配置 即可
复制CNAME,进入你的域名供应商
我的是阿里云找到域名->解析
等待七牛云与阿里云解析时间即可
示例
你的压力来源于无法自律,只是假装努力,现状跟不上内心欲望,所以你焦虑又恐慌。——杨不易