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 № 1Ich 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";
?>