Laravel перемещает файлы с одного диска на другой, используя `Storage` - PullRequest
0 голосов
/ 06 сентября 2018

В моем файле конфигурации filesystems.php определены два диска:

'd1' => [
    'driver' => 'local',
    'root' => storage_path('app/d1'),
],
'd2' => [
   'driver' => 'local',
   'root' => storage_path('app/d2'),
],

Эти диски также могут быть корзинами Amazon S3, и может быть комбинация корзины S3 и локального диска.

Допустим, у меня есть файл app/d1/myfile.txt, который я хочу переместить в app/d2/myfile.txt.

. Сейчас я делаю

$f = 'myfile.txt';
$file = Storage::disk('d1')->get($f);
Storage::disk('d2')->put($f, $file);

и оставляю исходный файлна d1, как это меня не беспокоит (я периодически удаляю файлы из d1).

Мои вопросы:

Является ли код ниже атомного, как бы я проверилесли это так, а если нет, то как бы сделать его атомарным (для сценариев, когда файлы имеют размер 1 ГБ или что-то похожее):

$f = 'myfile.txt';
$file = Storage::disk('d1')->get($f);
Storage::disk('d2')->put($f, $file);
Storage::disk('d1')->delete($f);

Есть ли простой способперемещать файлы с одного диска на другой, используя фасад Storage.В данный момент мне нужно, чтобы он работал с одного локального диска на другой, но в будущем мне может понадобиться переместить их из одного сегмента S3 в тот же, из одного сегмента S3 в другой или из локального диска в сегмент S3.

Спасибо

...