Загрузить изображение в Google Cloud Storage с помощью PHP?

я просто не могу заставить этот код работать. Я получаю изображение по URL-адресу и сохраняю его во временной папке, чтобы загрузить его в корзину в Google Cloud Storage. Это проект CodeIgniter. Эта функция находится внутри контроллера и может получить изображение и сохранить его в корневой папке проекта «tmp/entries».

Я что-то пропустил? Файл просто не загружается в Google Cloud Storage. Я зашел в средство просмотра Blobstore на своем локальном сервере разработки App Engine и заметил, что файл есть, но он пуст. Я также хочу иметь возможность загружать этот файл на серверы Google с моего сервера разработки. Сервер разработки, похоже, перезаписывает эту опцию и сохраняет все файлы локально. Пожалуйста помоги.

public function get()
{
    $filenameIn  = 'http://upload.wikimedia.org/wikipedia/commons/1/16/HDRI_Sample_Scene_Balls_(JPEG-HDR).jpg';
    $filenameOut = FCPATH . '/tmp/entries/1.jpg';

    $contentOrFalseOnFailure   = file_get_contents($filenameIn);
    $byteCountOrFalseOnFailure = file_put_contents($filenameOut, $contentOrFalseOnFailure);

    $options = [ "gs" => [ "Content-Type" => "image/jpeg" ]];
    $ctx = stream_context_create($options);
    file_put_contents("gs://my-storage/entries/2.jpg", $file, 0, $ctx);

    echo 'Saved the Image';
}

person JackH    schedule 15.11.2013    source источник


Ответы (1)


Как вы заметили, сервер приложений для разработчиков локально эмулирует Cloud Storage. Итак, это предполагаемое поведение, и оно позволяет вам тестировать, не изменяя производственное хранилище. Если вы запустите развернутое приложение, вы должны увидеть, что записи действительно идут в вашу корзину GCS.

person Amy U.    schedule 16.11.2013
comment
Является ли предполагаемое поведение полной загрузкой файла на сервер разработки или отображением пустого файла? Вы говорите, что файл не будет пустым, если он будет работать на сервере App Engine? - person JackH; 18.11.2013