freyo / flysystem-qcloud-cos-v5

💾 Flysystem Adapter for Tencent Cloud COS V5
https://intl.cloud.tencent.com/product/cos?lang=en
MIT License
156 stars 23 forks source link

批量删除用的是单个文件删除迭代调用 #44

Closed tantalate closed 3 years ago

tantalate commented 3 years ago

腾讯云SDK有提供批量删除的API,但是这里在删除的时候,是迭代调用单个文件删除接口,要删除的文件量比较大时效率很低。

freyo commented 3 years ago

腾讯云SDK有提供批量删除的API,但是这里在删除的时候,是迭代调用单个文件删除接口,要删除的文件量比较大时效率很低。

如果你的用法是 Storage::delete(['file.jpg', 'file2.jpg']); ,这个是底层迭代调用的。参见 https://github.com/laravel/framework/blob/8.x/src/Illuminate/Filesystem/FilesystemAdapter.php#L362

但是你可以通过 app('filesystem')->disk('cosv5')->getAdapter()->getCOSClient() 直接调用腾讯云SDK。 下方是个例子。

$adapter = app('filesystem')->disk('cosv5')->getAdapter();
$client = $adapter->getCOSClient();
$client->deleteObjects([
  'Bucket' => $adapter->getBucketWithAppId(),
  'Objects' => [
    ['Key' => 'ObjectKey1'],
    ['Key' => 'ObjectKey2'],
  ],
]);
tantalate commented 3 years ago

了解了,感谢! 不知道S3之类的是不是也是这样,感觉laravel应该加一个批量删除的方法