七牛云--java获取域空间文件列表

时间:2022-08-23 16:33:40

      首先,注册七牛云,获取密钥,个人中心-->密钥管理

   七牛云--java获取域空间文件列表

        当然我们可以在对象存储中jia建立存储空间,在内容管理中上传图片和下载图片。在七牛上的每一张图片都有自己单一的链接,但是随着业务的扩展,需要访问到一个域下面的所有图片,图片的具体名称并不确定,或者以后会有变动。所以需要实现获取空间文件列表。

看了七牛云的java SDK文档实现过程如下:

//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone0());
//...其他参数参考类注释

String accessKey = "your access key";
String secretKey = "your secret key";

String bucket = "your bucket name";

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);
    }
}

       解释一下上面的代码,accessKey 就是AccessKeysecretKey 是你的SecretKey,bucket 是是个存储空间的外链默认域名。

        七牛云--java获取域空间文件列表

        prefix为查找在此域中的文件前缀名称,相当于按照前缀去查询符合条件的所有图片。

        我们获取到文件列表之后网络传输的是文件流的形式所以本地要使用需要在代码中对流进行转化。


将FileInfo转化成BufferedImage

//列举空间文件列表
BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(BUCKET, prefix, limit, delimiter);
FileInfo[] fileInfos = fileListIterator.next();

Random rand = new Random();
int index = rand.nextInt(fileInfos.length);
FileInfo fileInfo = fileInfos[index];
System.out.println("output:>>>" + fileInfo.key);

ByteArrayInputStream in = new ByteArrayInputStream(getImageFromNetByUrl(BUCKET_HOST_NAME + "/" + fileInfo.key));
@NonNull BufferedImage oriImage = ImageIO.read(in);

return oriImage;

注意 BUCKET_HOST_NAME需要是拼接好网络协议的,七牛云默认是http。