/ / Stream schreiben ungültigen Bildinhalt - PHP, Google-Cloud-Speicher

Stream Write Invalid Image Content - PHP, Google-Cloud-Speicher

Ich habe ein PHP-Skript, das Bilder von Put-Anfrage speichert. Das Skript wird auf gehostet Host Monster

Hier ist mein Skript

<?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";
?>

Mein Skript funktioniert gut. Jetzt habe ich dieses Skript auf google-appengine portiert und speichert nun ungültige Bilder. Hier ist ein App-Engine-Skript

<?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";
?>

Dateien werden mit ungültigem Inhalt erstellt. Kann jemand helfen / zeigen, was ich falsch mache?

Antworten:

0 für die Antwort № 1

Ich habe das gleiche Skript ausprobiert und es funktioniert gut für mich,Möglicherweise waren Sie aufgrund der Größe des Bildes mit dem Problem konfrontiert, da dies ein Problem in der PHP-Bibliothek war, das den Memcache-Schlüssel generiert. Memcache kann den Schlüssel mit einer Länge von mehr als 250 Byte nicht generieren. Jetzt ist dieser Fehler behoben. Hier finden Sie den Code-Ausschnitt, den ich ausprobiert habe. Er ist derselbe wie bei Ihnen.

<?php
use googleappengineapicloud_storageCloudStorageTools;
use googleappengineapilogLogService;

$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";
?>