Загрузить $ _FILES ["file"] ["tmp_name"] в облачное хранилище с движком приложения на PHP, отправленное из AJAX - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь загрузить файл в облачное хранилище с cloud libraries и обнаружил, что проблема в $_FILES["file"]["tmp_name"].Обычно я использовал бы move_uploaded_file ( $_FILES["file"]["tmp_name"] , $new_file_name ) на обычном сервере, но в appengine это невозможно, вам нужно использовать эту функцию для загрузки в облачное хранилище.

require __DIR__ . '/../../vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
function upload_object($bucketName, $objectName, $source) {
    $storage = new StorageClient();
    $file    = fopen($source, 'r');
    $bucket  = $storage->bucket($bucketName);
    $object  = $bucket->upload($file, [
        'name' => $objectName
    ]);
}
$new_file_name = "";
$new_file_name = "file-".rand(10,90000).".pdf";
upload_object('bucket-name', $new_file_name, $_FILES["file"]["tmp_name"]);

Но это может загружать только файлы из appengine вcloudstorage не файлы, отправленные на PHP с AJAX

Проблема должна быть vfs://root/uploads/0, но почему?

1 Ответ

0 голосов
/ 25 октября 2018

Функция PHP move_uploaded_files перемещает файл из временного хранилища вашего веб-сервера в другое место на том же сервере.Первым аргументом этой функции является загруженный файл с вашего клиента (Ajax или любой другой механизм загрузки).

Ваша проблема заключается в том, что вам нужно скопировать загруженный файл из его временного расположения на веб-сервере вGoogle Cloud Storage.Это двухэтапный процесс (загрузка файла, копирование файла в GS).

У вас есть два варианта, один из которых связан с угрозами безопасности.Во-первых, загрузите файл на свой веб-сервер, затем скопируйте файл в Google Cloud Storage.Второе, которое несет угрозу безопасности, - позволить конечному пользователю (клиенту) напрямую загружать файл в Google Cloud Storage.Разумным безопасным методом является использование presigned URLs.

. Надеемся, что этот ответ объяснит процесс загрузки клиентских файлов на ваш веб-сервер, а затем в Google Cloud Storage ИЛИ с вашего клиента непосредственно в Google Cloud Storage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...