我开发了一个PHP的API,托管在Google App Engine上,用于我的Android应用程序。
基本上,当用户想要更改他的个人资料图片时,Android应用程序会向服务器发送包含用户ID,会话密钥和要上传的图片的请求。我想在Google云上上传此图片,但由于Google App Engine要求您构建公开上传网址以上传文件,如何生成上传网址,然后使用此网址在我的Google Cloud中上传个人资料图片在一个请求中?
我在生成上传网址后尝试使用基本的PHP重定向,但我得到了HTTP 405。
我真的被困住了,老实说我不明白你为什么需要在将文件上传到Google App Engine之前创建一个URL ...
来源:https://cloud.google.com/appengine/docs/php/googlestorage/user_upload
答案 0 :(得分:0)
您希望在Google云端存储上上传的照片在GCS上保存为Blob,这就是他们要求您创建网址的原因。按照文档[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/
答案 1 :(得分:-2)
function db_select()
{
return @mysqli_select_db($this->database, $this->conn_id);
}