【问题标题】:Google App Engine PHP file uploadGoogle App Engine PHP 文件上传
【发布时间】:2014-12-10 01:28:44
【问题描述】:

我用 PHP 开发了一个 API,托管在 Google App Engine 上,用于我的 Android 应用程序。

基本上,当用户想要更改他的个人资料图片时,android 应用程序会向服务器发送一个请求,其中包含用户 ID、会话密钥和要上传的图片。我想在 Google Cloud 上上传这张图片,但是由于 Google App Engine 要求您建立一个公共上传 URL 来上传文件,我如何生成上传 URL,然后使用此 URL 将个人资料图片上传到我的 Google Cloud在一个请求中?

我在生成上传 URL 后尝试使用基本的 PHP 重定向,但我得到了 HTTP 405。

我真的被困住了,老实说,我不明白为什么您需要在将文件上传到 Google App Engine 之前创建一个 URL...

来源:https://cloud.google.com/appengine/docs/php/googlestorage/user_upload

【问题讨论】:

标签: php android google-app-engine file-upload


【解决方案1】:
$pdf->Output('example_025.pdf', 'I');
$DynamicNameofPic = rand(1000,10000)."_Invoice.pdf";
$FileNameDynamic = "gs://#######/".$DynamicNameofPic;
$pdf->Output($FileNameDynamic,'F');
$image_dataURL = "https://storage.googleapis.com/##########/".$DynamicNameofPic;
$image_data = file_get_contents($image_dataURL);$fileName = $DynamicNameofPic;

【讨论】:

    【解决方案2】:

    您要上传到 Google Cloud Storage 的照片似乎在 GCS 上保存为 Blob,这就是他们要求您创建 URL 的原因。遵循文档 [1],它与 python 中的 Blobstore API 相关,但 blob 的概念对于任何语言都是相同的,因此阅读有关 blob 的内容很好。还可以在下面找到一个示例代码,它可以帮助您在 GCS 上上传照片。

    $options = [ 'gs_bucket_name' => 'bucket-name' ];
        $upload_url = CloudStorageTools::createUploadUrl('/upload', $options);
    <form action="<?php echo $upload_url?>" method="post" enctype="multipart/form-data">
          <input type ="file" name="fileupload" id = "fileupload">
          <input type="submit" value="Upload" name ="submit">
     </form>
    
    Upload Handler:
    <?php
    use google\appengine\api\cloud_storage\CloudStorageTools;
    $gs_name = $_FILES['fileupload'];
    $buffer = file_get_contents($gs_name['tmp_name']);
    $bucket = CloudStorageTools::getDefaultGoogleStorageBucketName();
    $user_pic_url = 'gs://' . $bucket 
    . (substr($final_file_path,0,1) != '/' ? '/' : '' )
    . $final_file_path;
    // set file options on Google Could Storage 
    $options = stream_context_create( ['gs' => ['acl' => 'public-read', 
    'Content-Type' => 'image/jpg']] );
    echo "<br>";
    $my_file = fopen($user_pic_url, 'w', false, $options);
    fclose($my_file);
    

    [1] BlobStore API: https://cloud.google.com/appengine/docs/python/blobstore/

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 2010-10-24
      • 1970-01-01
      • 2013-09-09
      • 2010-09-10
      相关资源
      最近更新 更多