Нужен ли файл move_uploaded_file для локального хранилища до облачного хранилища?

Я работаю над приложением, которое позволяет пользователям загружать изображение в систему, и мы храним это изображение в облачном хранилище (S3). В настоящее время, как только изображение загружено, мы обрабатываем его файл, копируя временный файл локально через move_uploaded_file() а затем с помощью этого локального файла загрузить его на S3. Является ли эта локальная копия необходимостью или можно переопределить этот шаг и напрямую загрузить в облачное хранилище, не сохраняя локальную копию?

$temp = $_FILES['file']['tmp_name'];
$target = ABSPATH.'uploads/';
$name = $_FILES["file"]["name"];
$targetFile = $target . $name;
move_uploaded_file($temp,$targetFile);

//upload local file to s3
$this->saveToCloud($this->s3Path,$targetFile);

Прежде чем файл будет скопирован в локальное хранилище через move_uploaded_file он живет в хранилище tmp php:

/Applications/MAMP/tmp/php/phpx3uBiT

То, что я хотел бы сделать, это просто:

 $this->saveToCloud($this->s3Path,$_FILES["file"]["tmp_name"]);

Заранее спасибо!

1

Решение

Если вы думаете о проблемах производительности, то вам не следует беспокоиться о move_uploaded_file потому что он просто делает некоторые проверки и просто переименовывает его имя (путь). Потребление процессора минимально. Если место назначения временного файла находится на внешнем жестком диске, и ему потребуется сетевая транспортировка.

Если вы хотите сделать процесс сервера более легким, то вы можете рассмотреть возможность использования AWS SDK Javascript для браузера и загрузите файл напрямую из клиентского браузера в корзину S3 (проверьте, как это сделать: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html#s3-example-photo-album-adding-photos). Используя этот способ, вы должны принять во внимание создание HTTP-запроса только для сохранения информации о файле в вашей базе данных после / до загрузки файла.

Если вы не заинтересованы в использовании AWS SDK Javascript для браузера тогда вы можете попробовать:

$this->saveToCloud($this->s3Path,$_FILES['file']['tmp_name']);

но я не уверен, что это работает, я не пробовал.

надеюсь, это поможет

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector