Поток Запись недопустимого содержимого изображения

У меня есть php-скрипт, который хранит изображения из положенного запроса. Скрипт размещен на Host Monster

Вот мой сценарий

<?php

$path = 'test.png';

$put = fopen("php://input", "r");

$fp = fopen($path, "w");

while ($data = fread($put, 1024))
fwrite($fp, $data);

fclose($fp);
fclose($put);

echo 'done';
?>

Мой сценарий работает хорошо. Теперь я перенес этот скрипт на google-appengine, и теперь он хранит недействительные изображения. Вот скрипт app-engine

<?php
$path = 'gs://my-bucket/test.png';

$options = ['gs' => ['Content-Type' => 'image/jpeg' , 'acl'=>'public-read']];

$ctx = stream_context_create($options);

$put = fopen("php://input", "r");

$fp = fopen($path, "w",false,$ctx);

while ($data = fread($put, 1024))
fwrite($fp, $data);

fclose($fp);
fclose($put);

echo 'done';
?>

Файлы созданы с недопустимым содержанием. Может кто-нибудь помочь / указать, что я делаю неправильно?

0

Решение

Я попробовал тот же сценарий, и он отлично работает для меня, возможно, вы столкнулись с проблемой из-за размера изображения, так как это была проблема в библиотеке PHP, которая генерирует ключ memcache. Memcache не может сгенерировать ключ длиной более 250 байт. Теперь эта ошибка исправлена. Найдите ниже фрагмент кода, который я попробовал. Он такой же, как ваш.

<?php
use google\appengine\api\cloud_storage\CloudStorageTools;
use google\appengine\api\log\LogService;

$object_url = 'gs://my-bucket/test1.png';

$options = stream_context_create( ['gs' => ['acl' => 'public-read',
'Content-Type' => 'image/jpg']] );

$my_file = fopen($object_url, 'w', false, $options);
$put = fopen("image.jpg", "r");

while ($data = fread($put, 1024))
fwrite($my_file, $data);
fclose($my_file);
fclose($put);

echo 'done';
?>
0

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

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

По вопросам рекламы [email protected]