2016-04-09 80 views
1

對不起noob問題,但這是一個我似乎無法解決的問題。我有一個laravel腳本將文件公開上傳到谷歌存儲桶,它正常工作。問題是我上傳的對象就在桶內,它應該放在桶內的一個目錄中。 e.g鬥 - 的/ dev桶/,正確的目錄 -/DEV-桶/媒體/下面是我的腳本PHP:將公共文件上傳到Google存儲桶中的文件夾

  $client = new \Google_Client(); 
      $credential = new \Google_Auth_AssertionCredentials(
      '[email protected]', 
      ['https://www.googleapis.com/auth/devstorage.full_control'], 
      file_get_contents(storage_path().'xxxxx.p12') 
     ); 
     $client->setAssertionCredentials($credential); 

     // this access control is for project owners 
     $ownerAccess = new \Google_Service_Storage_ObjectAccessControl(); 
     $ownerAccess->setEntity('project-owners-' . 'xxxxxxxxxxx'); 
     $ownerAccess->setRole('OWNER'); 

     // this access control is for public access 
     $readerAccess = new \Google_Service_Storage_ObjectAccessControl(); 
     $readerAccess->setEntity('allUsers'); 
     $readerAccess->setRole('READER'); 

     $storage = new \Google_Service_Storage($client); 
     $obj = new \Google_Service_Storage_StorageObject(); 
     $obj->setName($stageFileName); 
     $obj->setAcl([$ownerAccess, $readerAccess]); 

     $storage->objects->insert(
      Config::get('constants.bucket'), 
      $obj, 
      [ 
       'name'   => $stageFileName, 
       'data'   => file_get_contents($stageFile), 
       'uploadType' => 'media', 
      ] 
     ); 

是否有關於如何把對象的桶內目錄內的選項?

回答

1

您應該可以通過預先將要上傳的對象的文件名與存儲區中的目錄進行上傳,從而上載目錄中的文件。例如,如果你在你的水桶一個目錄中稱爲開發你的文件名應以「開發/ {} fileToBeUploaded的.txt」

+0

非常感謝。我到處尋找這個。 – Lomse

0

將文件上載到在谷歌鬥特定的文件夾開始,我寫了下面的代碼:

Blob blob= 
storage.create(BlobInfo.newBuilder(bucketName,"folder_name/"+f.getName()).setAcl(acls).build(),f.getInputStream()); 

以及從該文件夾下載:

BlobId blobId = BlobId.of(bucketName, vendorName+"/"+fileName); 
Blob blob = storage.get(blobId); 

PS這是在JAVA中,可以用任何其他語言做類似的東西。

相關問題