Laravel将文件从一个磁盘移动到另一磁盘-使用`Storage`

问题描述 投票:0回答:1

我在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删除文件)。

我的问题是:

代码在atomic之下,如何检查它是否为原子,如果不是,如何将其设为atomic(对于文件为1GB或类似大小的情况:)]]

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

是否存在

使用Storage外观将文件从一个磁盘移动到另一个磁盘的简单方法。目前,我需要它从一个本地磁盘移至另一个磁盘,但将来可能需要将它们从一个S3存储桶移至同一磁盘,从一个S3存储桶移至另一个磁盘,或从本地磁盘移至S3存储桶。

谢谢

我在filesystems.php配置文件中定义了两个磁盘:'d1'=> ['driver'=>'local','root'=> storage_path('app / d1'),],'d2'= > ['驱动程序=>'本地','根'=> ...

amazon-s3 atomic laravel-5.6 laravel-filesystem
1个回答
0
投票
use Illuminate\Support\Facades\Storage;

$fileName = pathinfo($request->image, PATHINFO_BASENAME);

Storage::move(
    Storage::disk('temp')->path($fileName), 
    Storage::disk('images')->path($fileName)
);
© www.soinside.com 2019 - 2024. All rights reserved.