2014-10-15 3 views
2

Google App Engine에서 호스팅되는 PHP를 사용하여 Android 앱과 함께 사용했습니다.Google App Engine PHP 파일 업로드

기본적으로 사용자가 프로필 사진을 변경하려는 경우 Android 앱은 사용자 ID, 세션 키 및 업로드 할 사진이 포함 된 요청을 서버에 보냅니다. 이 사진을 Google Cloud에 업로드하고 싶지만 Google App Engine은 공개 업로드 URL을 만들어 파일을 업로드해야하므로 업로드 URL을 생성 한 다음이 URL을 사용하여 Google Cloud에서 프로필 사진을 업로드 할 수 있습니다 한 요청에?

나는 업로드 URL을 생성 한 후 기본 PHP 리디렉션을 사용하려고하지만 난 HTTP를 얻을 수 (405)

정말 붙어이고 당신이 파일을 업로드하기 전에 URL을 생성해야하는 이유 솔직히 이해가 안 돼요 구글 앱 엔진에 ...

자료 : https://cloud.google.com/appengine/docs/php/googlestorage/user_upload

답변

0

당신이 Google 클라우드 스토리지에 업로드 할 사진들이 URL을 작성하도록 요청 이유 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] Blob 저장소 API :https://cloud.google.com/appengine/docs/python/blobstore/

-2
$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;