我有以下情况。我正在使用laravel和Google Cloud Storage,因此基本上,我将自己的自定义文件系统附加到Google Cloud Storage。我的代码看起来像这样-
try{
$disk = Storage::disk('gcs');
$disk->put('/service_provider/transports/tech_passports', $file1);
$disk->put('/service_provider/transports/tech_passports', $file2);
$disk->put('/service_provider/transports/pictures', $file3);
$disk->put('/service_provider/transports/pictures', $file4);
$disk->put('/service_provider/transports/pictures', $file5);
$disk->put('/service_provider/transports/pictures', $file6);
} catch(\Exception $e){
}
现在我很担心。如果前三个文件上传而第四个文件有错误怎么办。所以它会赶上块,最后,只有3个文件将被上传,这不是我所需要的。
我需要的是像原子性一样全部上传或没有文件上传。我该如何实现?
答案 0 :(得分:0)
为确保所有文件都已上传,请尝试对每个文件使用resumable uploads,并执行以下步骤:
启动上传>过程响应>上传文件>检查上传状态>过程响应>恢复上传
重试最后三个步骤,以根据需要恢复多次上传或实施另一种解决方案(例如:删除所有已上传的文件)。
您还可以通过StackOverflow上的另一个问题检查Google Cloud Storage API PHP resumable behavior in the example。
请注意,Cloud SDK utility Gsutil中也实现了可恢复的上传。可以用于Synchronize content of two buckets /目录。