2017-01-05 3 views
0

У меня есть объекты в одном ковше, которые мне иногда нужно перенести на второе ведро в Amazon S3. Я использую Laravel 5.3 с Flysystem для управления этими ведрами.Как перенести файл из одного ведра в другой с помощью flysystem?

Одним из решений является загрузка изображений на мой сервер, а затем загрузка их в другое хранилище, но это кажется пустой тратой времени/полосы пропускания, поскольку файл существует в S3 и перемещается внутри S3. Можно ли это сделать в Flysystem или мне нужно будет напрямую использовать API Amazon?

+0

Вы могли бы написать работу для файлов, который должен быть передан и в работе, используйте '$ содержание = Хранение :: получить ('file.jpg'); 'для получения файла и создания отдельного нового экземпляра' Flysystem' с подключением к новому серверу и записи прочитанного содержимого. –

+0

@CerlinBoss я не буду загружать и загружать в этот момент? Этого я пытаюсь избежать. Моя цель - перенести файл из ведра -> ведро, а не в ковш -> мой сервер -> ведро. – Citizen

+0

Я не думаю, что это то, что вы можете сделать с вашего сервера laravel. U может потребоваться использовать API Amazon для этого (если они предоставляют какой-либо). –

ответ

-1

Вы можете использовать функцию перемещения FilesystemAdapter для перемещения файла:

$disk = Storage::disk('s3'); 
if (!$disk->move('bucketOne/testFile.jpg', 'bucketTwo/testFile.jpg')) { 
    throw new \Exception('File could not be moved.'); 
} 
+0

Спасибо. Я пытаюсь найти документацию, которая показывает, что она не будет проходить через мой сервер и будет прямо из bucket в bucket, но я не вижу этот метод в документации API Flysystem. Я не уверен, как бы я пошел на тестирование, чтобы убедиться, что это так. – Citizen

+1

FilesystemAdapter использует библиотеку flysystem-aws-s3-v3. Функции перемещения вызывают две функции: копировать и удалять (сначала скопировать объект, а затем удалить старый). Копировать использует copyObject с помощью php S3Client, написанный AWS. Я не знаю, что они делают внутри, но я думаю, что это API-вызов для S3, который не загружает файл и не загружает его снова. –

+0

Это позволяет перемещать файлы внутри ведра, но не между ними – Poma

 Смежные вопросы

  • Нет связанных вопросов^_^