- A+
所属分类:Java
七牛云文件上传
- Maven依赖
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0, 7.2.99]</version>
</dependency>
- 创建控制层(多文件上传)
@RequestParam(value = "file", required = false) List<MultipartFile> files
- 获取七牛云上传凭证
先获取七牛云的上传凭证
两个key就是上面提到的密钥
bucket是你创建的对象存储的名称
String accessKey = "access key";
String secretKey = "secret key";
String bucket = "bucket name";
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
- 上传示例
如果传多个文件,可套用下述实现代码
//七牛云文件上传
String filePath = "/Documents/code/111.txt";
//第一种方式: 指定具体的要上传的zone
/**
*注:该具体指定的方式和以下自动识别的方式选择其一即可
*上传的空间(bucket)的存储区域为华东时
*Zone z = Zone.zone0();
*上传的空间(bucket)的存储区域为华北时
*Zone z = Zone.zone1();
*上传的空间(bucket)的存储区域为华南时
*Zone z = Zone.zone2();
*/
//第二种方式: 自动识别要上传的空间(bucket)的存储区域是华东、华北、华南。
Configuration configuration = new Configuration(Zone.zone1());
UploadManager uploadManager = new UploadManager(configuration);
//生成上传凭证,然后准备上传
String accessKey = QiNiuConstant.ACCESS_KEY;
String secretKey = QiNiuConstant.SECRET_KEY;
String bucket = "mx";
String key = "static/js/111.txt";
Auth auth = Auth.create(accessKey, secretKey);
//insertOnly 如果希望只能上传指定key的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1
String upToken = auth.uploadToken(bucket, key, 3600, new StringMap().put("insertOnly", 0));
try {
Response response = uploadManager.put(filePath, 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
}
}
获取七牛云存储列表
//查看列表
String accessKey = QiNiuConstant.ACCESS_KEY;
String secretKey = QiNiuConstant.SECRET_KEY;
String bucket = "mx-book";
//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone1());
Auth auth = Auth.create(accessKey, secretKey);
BucketManager bucketManager = new BucketManager(auth, cfg);
//文件名前缀
String prefix = "";
//每次迭代的长度限制,最大1000,推荐值 1000
int limit = 1000;
//指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串
String delimiter = "";
BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, prefix, limit, delimiter);
while (fileListIterator.hasNext()) {
//处理获取的file list结果
FileInfo[] items = fileListIterator.next();
for (FileInfo item : items) {
System.out.println(item.key);
System.out.println(item.hash);
System.out.println(item.fsize);
System.out.println(item.mimeType);
System.out.println(item.putTime);
System.out.println(item.endUser);
}
}
- 我的微信
- 加好友一起交流!
-
- 微信公众号
- 关注公众号获取分享资源!
-