1搭建环境
<dependencies>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0, 7.2.99]</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
2文件上传
/**
* 将图片上传到七牛云服务
* 1.更新用户图片信息(用户id=key)
* 2.访问图片
* 存储空间分配的:http://pkbivgfrm.bkt.clouddn.com
* 上传的文件名
* 更新图片之后:访问的时候,再请求连接添加上时间戳
*
*/
@Test
public void testUpload01() {
//构造一个带指定Zone对象的配置类
//指定上传文件服务器地址:
Configuration cfg = new Configuration(Zone.zone2());
//...其他参数参考类注释
//上传管理器
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "9j-CO8P1wbLT4OlIuUlXBvuRvL-DXUm1MtLPcnDi";
String secretKey = "v0LOAkW3uN6sem4r_FRP4RK9MXYYBth0kerD3W6q";
String bucket = "peacezhi";
//图片路径
String localFilePath = "D:\\常用\\新建文件夹\\阶段三-传统行业解决方案SaaS-HRM项目2\\IHRM项目\\day09图片上传及Jasper\\图片上传及Jasper\\资源\\资源\\001.png";
//存入到存储空间的文件名
String key = "test";
//身份认证
Auth auth = Auth.create(accessKey, secretKey);
//指定覆盖上传
String upToken = auth.uploadToken(bucket,key);
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
}
}
}
图片上传以后无法预览的问题:根据七牛云的提示操作,绑定一个自定义域名
3端点续传
//断点续传
@Test
public void testUpload02() {
//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone2());
//...其他参数参考类注释
//...生成上传凭证,然后准备上传
String accessKey = "9j-CO8P1wbLT4OlIuUlXBvuRvL-DXUm1MtLPcnDi";
String secretKey = "v0LOAkW3uN6sem4r_FRP4RK9MXYYBth0kerD3W6q";
String bucket = "peacezhi";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "D:\\常用\\新建文件夹\\阶段三-传统行业解决方案SaaS-HRM项目2\\IHRM项目\\day09图片上传及Jasper\\图片上传及Jasper\\资源\\资源\\test.xlsx";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = "testExcel";
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
//断点续传:
String localTempDir = Paths.get(System.getProperty("java.io.tmpdir"), bucket).toString();
System.out.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();
}
}
4文件下载
对于公开空间,其访问的链接主要是将空间绑定的域名(七牛云空间的绑定的自定义域名)拼接上空间里面的文件名即可访问,标准情况下需要在拼接链接之前,将文件名进行 urlencode 以兼容不同的字符
链接:https://pan.baidu.com/s/1MPnScy34GiNWrDOzXAld1g
提取码:nhcp
–来自百度网盘超级会员V2的分享