使用laravel-dropbox获取Dropbox文件列表并生成访问链接的问题
laravel-dropbox 获取文件列表同时返回访问链接的实现方案
laravel-dropbox 扩展默认的listContents接口仅返回文件、文件夹的基础元数据,没有内置访问链接字段,你可以通过调用扩展提供的共享链接生成接口,手动将访问链接补充到返回结果中,具体实现代码如下:
// 获取原始文件、文件夹列表 $fileList = \Dcblogdev\Dropbox\Facades\Dropbox::files()->listContents($query); // 遍历列表为所有文件补充访问链接 $fileList = collect($fileList)->map(function ($item) { // 仅处理文件类型,文件夹无需生成访问链接 if ($item['type'] === 'file') { // 调用Dropbox接口生成共享链接 $shareInfo = \Dcblogdev\Dropbox\Facades\Dropbox::files()->createSharedLinkWithSettings($item['path']); // 将默认分享页链接转换为可直接展示图片的直链 $item['access_url'] = str_replace('dl=0', 'raw=1', $shareInfo['url']); } return $item; })->toArray(); return $fileList;
额外优化建议
- 为了减少Dropbox接口调用频率、提升接口响应速度,你可以将生成好的
access_url存储到自有数据库中,后续获取列表时直接读取本地存储的链接即可,无需重复调用生成接口。 - 如果你需要为访问链接设置有效期、访问密码等限制,可以在调用
createSharedLinkWithSettings时传入第二个配置参数,示例如下:
$shareInfo = \Dcblogdev\Dropbox\Facades\Dropbox::files()->createSharedLinkWithSettings($item['path'], [ // 链接过期时间,格式为UTC时间 'expires_at' => '2024-12-31T23:59:59Z', // 是否要求密码访问 'require_password' => true, // 访问密码 'link_password' => '自定义访问密码' ]);
内容的提问来源于stack exchange,提问作者Tanvir Ahmed
相关产品推荐
相关产品推荐

