首页 文章

Appengine Cloud Storage上传图像并存储在存储中

提问于
浏览
0

我有个问题 . 欢迎任何帮助 .

我正在开发一个需要使用谷歌apis的解决方案,如 Cloud 存储, Cloud 端硬盘等 .

在clasic Profiles 页面中,我必须上传图片 Profiles . 然后我使用angularjs将数据发布到我的appengine / php / yii

formPHP:

`

<?php
require_once 'google/appengine/api/cloud_storage/CloudStorageTools.php';
use google\appengine\api\cloud_storage\CloudStorageTools;
$options = [ 'gs_bucket_name' => 'seektrabajo' ];
$upload_url = CloudStorageTools::createUploadUrl('/perfiles/subirFotoPerfil', $options);
?>
<input type="file" name="file" 
       nv-file-select="uploader.uploadAll()" 
       uploader="uploader"   />

`

当提交发送数据到谷歌和谷歌到yii ajax服务时:

`

public function actionSubirFotoPerfil(){
     $answer = array('answer'=>'Incompleted','serverFile'=>'sinfoto.png');
     if(!empty( $_FILES )){
         $filename = $_FILES['file']['name'];
         $gs_name =  $_FILES['file']['tmp_name'];
         move_uploaded_file($gs_name, 'gs://seektrabajo/'.$filename);
         $answer = array( 'answer' => 'File transfer completed','serverFile' => $filename);
     }
     echo json_encode( $answer );
     Yii::app()->end();
 }

`

问题是永远不要在 Cloud 存储上保存上传到我的存储桶的文件 . 这不适用于开发/本地模式,并且要么部署了appengine . 在appengine土地,我得到这个错误:

我只是鼓励:

gsutil acl ch -u user@gmail.com:FULL_CONTROL gs://seektrabajo

user@gmail.com来自我的谷歌控制台/ apis-autentications /电子邮件

![网页浏览器控制台错误] [1]

http://i.stack.imgur.com/noKnh.png

有人有想法吗?谢谢 .

1 回答

  • 0

    为什么要将文件上传到静态处理程序然后将其上传到GCS? Use createUploadUrl() to template the <form> you serve . 在您自己的应用程序上为该函数提供回调URL,一旦文件上传,请求将使用表单的其余参数,文件的元数据等进入您的应用程序...

    使用您正在使用的模式,不仅要努力弄清楚如何正确地传输数据,而且还要处理您实例上的所有读/写操作,如果您打算使用它肯定不是一个好主意这在 生产环境 代码中,您可以为使用的资源付费 .

    简而言之,没有理由使用这种模式 . 在传统的Web应用程序中,您可以将文件表单发布到路由上的自己的服务器上,并且就像您在示例代码中一样(减去转发到GCS),但是使用App Engine,您需要与传统方式略有不同您购买并托管PHP运行时的单个VM上的Web开发 .

相关问题