2017-07-18 21 views
0

Google Cloud Storage JSON APIを使用して、GoogleのクラウドストレージバケットにImageをアップロードしようとしています。ファイルはアップロードされていますが、何も表示されていません。私はこれを介して画像をアップロードしていますGoogle Cloud Platform - 画像ファイルをGoogle Cloud Storageバケットにアップロードするにはどうすればよいですか?

<?php 

    if(isset($_POST["submit"])) 
    { 
     // Move uploaded file to a temp location 
     $uploadDir = 'temp/'; 
     $filename=$_FILES["fileToUpload"]["name"]; 
     $filesize=$_FILES["fileToUpload"]["size"]; 
     $uploadFile = $uploadDir . basename($_FILES['fileToUpload']['name']); 

     $authheaders = array(
      "Authorization: Bearer xxxxxx(my access token)", 
      "Content-Type: image/jpeg", 
      "Content-Length:".$filesize 

     ); //The access-token has to be generate everytime after one-hour. 

     if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadFile)) 
     { 
      // Prepare remote upload data 
      $uploadRequest = array(
       'fileName' => basename($uploadFile), 
       'fileData' => file_get_contents($uploadFile) 
      ); 

      // Execute remote upload 
      $curl = curl_init(); 
      $url="https://www.googleapis.com/upload/storage/v1/b/[bucket_name]/o?uploadType=media&name=".$filename; 
      curl_setopt($curl, CURLOPT_URL,$url); 
      curl_setopt($curl, CURLOPT_HTTPHEADER, $authheaders); 
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
      curl_setopt($curl, CURLOPT_TIMEOUT, 30); 
      curl_setopt($curl, CURLOPT_POST, 1);  
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($curl, CURLOPT_POSTFIELDS, $uploadRequest); 
      $response = curl_exec($curl); 
      curl_close($curl); 
      echo $response; 

     } 
    } 
?> 

: - 画像番号1で

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"><br> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

</body> 
</html> 

Image Number 1

見て、ファイルが正常にアップロードなっています。しかし、私はそれを見るためにそれをクリックしたときに、それは画像番号のように示し2.

Image Number 2

答えて

0

documentationによると、リクエストの本文(別名CURLOPT_POSTFIELDS)には、[JPEG_DATA](別名:file_get_contents($uploadFile))が含まれている必要があります。

しかし、あなたのサンプルでは、​​あなたが身体にGoogle Cloud Storage JSON APIためbody property metadata names有効でさえありません'fileName''fileData'の配列を与えています。

Google Cloud Storageは、'fileName''fileData'の配列を実際の[JPEG_DATA]として解釈し、常に表示される小さな正方形の画像として返すJPEGファイルとしてレンダリングします。

0

あなたのファイルは、実際にお使いのブラウザでImage Number 2に表示されます。

画像のサイズが小さいため、ブラウザには表示されません。 your uploaded imageでは、4つのボックス(2白、2灰色)内に小さな白いボックスが表示されています。ズームインして確認することができます。私はあなたがアップロードしたイメージだと信じています。

少し大きめの別のイメージをアップロードし、動作しているかどうかを確認できます。

+0

大きなサイズの画像をアップロードしようとしましたが、それでも同じ画像が表示されました –

関連する問題