OSS 云文件列举分页
前言
目前项目开发中上传功能很多都是使用云存储,其好处太多这里就不列举了。但是在上传成功后,有些功能场景下需要对存储桶内的文件进行管理。自然把历史的文件列表展示出来就很有必要了。然后有列表就有分页,云存储又不像本地存储直接读文件夹就可以,所以我想了两种方法来解决。
方法
将上传的文件返回的地址都存到数据库中,取列表就分页的读表返回。
使用 OSS 文档的文件列举方法,好处是不用建表等等,所以下面以这种方式演示。
说明
Oss 的 SDK 中提供一个方法 listObjects,接收两个参数(options)。分别表示存储桶名,基本参数集。prefix,nextMarker,$maxkeys,参数描述见如下。
prefix 是自己在存储桶下存放文件的文件夹路径,做分页最主要的是maxkeys 这两个参数。一个是文件的起点就相当于分页 start,一个是每次列举的最大个数就相当于 page_size。
思路
实现这个分页是不带页码下拉式加载,所以不存在可以点击返回上一页,主要从maxkeys 开始。
1. getNextMarker()方法获取上一次列举文件的标识,没有为空窜,有则返回上一次列表最后的那个文件路径。
2. 将返回的标识存入缓存中,每次接口请求进来从缓存中读取一下上一次的文件标识。
3. 将标识传入 listObjects 方法中 $options 参数的 $nextMarker。就可以以上一次标识为起点列举后面的列表。
4. 自定义一参数,如 $page,(为 0,$nextMarker 则不取缓存直接传入空窜标识;下拉时则 page 累加传入缓存标识)。这样就可在接口请求时从最开始列举 Oss 文件。
代码实现
业务接口方法。
Oss 文件列举封装方法。
评论