七牛云
七牛云存储
- 账号注册
- 身份认证
- 创建存储空间
- 注意存储区域
- 访问控制的类别
- 在个人中心中记录 AccessKey与SecretKey
- 参照JAVA SDK开发文档编写工具类
pom依赖
<!--七牛云-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.19</version>
</dependency>
存储区域所对应的Region
| 机房 | Region |
|---|---|
| 华东 | Region.region0(), Region.huadong() |
| 华北 | Region.region1(), Region.huabei() |
| 华南 | Region.region2(), Region.huanan() |
| 北美 | Region.regionNa0(), Region.beimei() |
| 东南亚 | Region.regionAs0(), Region.xinjiapo() |
普通上传
/**
* 1.更新用户图片信息(用户id=key)
* 2.访问图片
* 存储空间分配的域名: http://q5qt6ysbg.bkt.clouddn.com
* 加上图片的名称
* 更新图片之后,由于七牛云的缓存问题,访问的时候,在请求连接添加上一个随机字符
*/
@Test
void contextLoads() {
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "personal-test01";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "E:\\Users\\Hitenine\\Pictures\\音节.PNG";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = "test01"; //代表存储到空间的文件名 可以用用户ID做key
//身份认证
Auth auth = Auth.create(accessKey, secretKey);
//指定覆盖上传
String upToken = auth.uploadToken(bucket,key);
// String upToken = auth.uploadToken(bucket);
try {
//上传
Response response = uploadManager.put(localFilePath, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key);
System.out.println(putRet.hash);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
}
断点续传
//断点续传
@Test
public void test01() {
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
//...其他参数参考类注释
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "personal-test01";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "E:\\Users\\Hitenine\\Documents\\Documents.rar";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = "test02";
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
//断点续传 本地路径 C:\Users\Hitenine\AppData\Local\Temp\personal-test01
String localTempDir = Paths.get(System.getProperty("java.io.tmpdir"), bucket).toString();
System.err.println(localTempDir);
try {
//设置断点续传文件进度保存目录
FileRecorder fileRecorder = new FileRecorder(localTempDir);
UploadManager uploadManager = new UploadManager(cfg, fileRecorder);
try {
Response response = uploadManager.put(localFilePath, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key);
System.out.println(putRet.hash);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
编写Util工具类
public class QiniuUploadUtil {
private static final String accessKey = "Jzv_bSB4SBqGUT7t_BNg6Re-T3Irri7mWsfoqM2l";
private static final String secretKey = "5t55NHRvKXqkk4GHWF549kNKWRvwwWUMBbTYnMsn";
private static final String bucket = "personal-test01";
private static final String prix = "http://q5qt6ysbg.bkt.clouddn.com/";
private UploadManager manager;
public QiniuUploadUtil(Region region) {
//初始化基本配置,构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(region);
//创建上传管理器
UploadManager uploadManager = new UploadManager(cfg);
}
//覆盖
public String upload(String imgName, byte[] bytes) {
//身份认证
Auth auth = Auth.create(accessKey, secretKey);
//指定覆盖上传
String upToken = auth.uploadToken(bucket, imgName);
try {
//上传
Response response = manager.put(bytes, imgName, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
//返回请求地址 缓存原因加上后缀
return prix + putRet.key + "?t=" + new Date().getTime();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
注意七牛云的缓存

浙公网安备 33010602011771号