流写无效的图像内容

时间:2014-11-28 07:43:46

标签: php google-cloud-storage

我有一个php脚本,用于存储来自put请求的图像。该脚本托管在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';    
?>  

使用无效内容创建文件。任何人都可以帮助/指出我做错了吗?

1 个答案:

答案 0 :(得分:0)

我尝试了相同的脚本并且它对我来说很好,可能是因为图像的大小而面临问题,因为它是PHP库中的一个问题,它生成了memcache密钥。 Memcache无法生成长度超过250个字节的密钥。现在该bug已修复。在下面找到我试过的代码片段。它和你的一样。

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