分页读取oss上的文件
OssImages是自己封装的图片对象
/**
* 获取文件夹下的所有文件
* @param bucketName
* @return
*/
public R<List<OssImages>> downloadImage(String bucketName) {
List list = new ArrayList();
//创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(newscpProperties.getAliyun().getOss().getEndpoint(),
newscpProperties.getAliyun().getOss().getAccessKeyId(),
newscpProperties.getAliyun().getOss().getAccessKeySecret());
final int maxKeys = 200;//单次读取最多文件个数
final String keyPrefix = "newscp/img/2020-12-02"; //读取路径前缀,就是指定读哪个文件夹
String nextMarker = null; //下次开始读的位置
ObjectListing objectListing;
//分页读取数据,每页最大200个文件
do {
objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix).withMarker(nextMarker).withMaxKeys(maxKeys));
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
sums.forEach(item ->{
//newscp/img/2020-12-01/13336501-1-1.jpg
String key = item.getKey();
//拼接图片路径
String imageUrl = "https://vp-yun-img.oss-cn-shenzhen.aliyuncs.com/" + key;
//切割获取图片名称 13336501-1-1.jpg
String fileName = key.substring(key.lastIndexOf("/") + 1);
//获取图片code
String skuCode = fileName.substring(0,fileName.indexOf("-"));
//创建文件对象
OssImages ossImages = new OssImages();
ossImages.setFileName(fileName);
ossImages.setImageUrl(imageUrl);
ossImages.setSkuCode(skuCode);
list.add(ossImages);
});
nextMarker = objectListing.getNextMarker();//下次开始读的位置
} while (objectListing.isTruncated());
// 关闭OSSClient。
ossClient.shutdown();
return R.ok().data(list);
}