我有一个存储桶中的对象,我偶尔需要将其转移到Amazon S3中的第二个存储桶。我使用带Flysystem的Laravel 5.3来管理这些桶。如何使用flysystem将文件从一个存储桶传输到另一个存储桶?
一个解决方案是将图像下载到我的服务器,然后将其上传到另一个存储桶,但这似乎是浪费时间/带宽,因为该文件存在于S3中,并且正在S3中移动。这可以在Flysystem中完成,还是需要直接使用Amazon的API?
我有一个存储桶中的对象,我偶尔需要将其转移到Amazon S3中的第二个存储桶。我使用带Flysystem的Laravel 5.3来管理这些桶。如何使用flysystem将文件从一个存储桶传输到另一个存储桶?
一个解决方案是将图像下载到我的服务器,然后将其上传到另一个存储桶,但这似乎是浪费时间/带宽,因为该文件存在于S3中,并且正在S3中移动。这可以在Flysystem中完成,还是需要直接使用Amazon的API?
可以使用FilesystemAdapter移动功能来移动文件:
$disk = Storage::disk('s3');
if (!$disk->move('bucketOne/testFile.jpg', 'bucketTwo/testFile.jpg')) {
throw new \Exception('File could not be moved.');
}
你可以写上已被转移,并在工作中的文件工作,使用'$内容=库存::得到( 'file.jpg');'获取文件并创建单独的新Flysystem实例,并连接到新服务器并写入所读取的内容。 –
@CerlinBoss不会在那个时候下载和上传吗?这就是我想要避免的。我的目标是将文件从存储桶 - >存储桶,而不是存储桶 - >我的服务器 - 存储桶。 – Citizen
我不认为这是你可以从你的laravel服务器做的事情。 U可能需要利用亚马逊的API(如果他们提供的话)。 –