2016-04-09 7 views
1

Entschuldigung für die noob Frage, aber das ist ein Problem, das ich nicht zu knacken scheinen kann. Ich habe ein Laravel-Skript, um die Datei öffentlich in einen Google Storage-Bucket zu laden, und es funktioniert ordnungsgemäß. Das Problem ist, dass das Objekt, das ich hochlade, sich gerade in dem Bucket befindet, wo es in einem Verzeichnis innerhalb des Buckets platziert werden sollte. z bucket -/dev-bucket/korrektes Verzeichnis -/dev-bucket/media/unten ist mein SkriptPHP: Hochladen von öffentlichen Dateien in einen Ordner in einem Google Storage Bucket

  $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', 
      ] 
     ); 

Gibt es eine Möglichkeit, wie Sie innerhalb des Verzeichnisses in dem Eimer um das Objekt zu setzen?

Antwort

1

Sie sollten Dateien in das Verzeichnis hochladen können, indem Sie den Dateinamen des zu ladenden Objekts mit dem Verzeichnis im Bucket zum Hochladen vorschießen. Zum Beispiel, wenn Sie ein Verzeichnis in Ihrem Eimer namens dev Ihr Dateiname mit ‚dev/{} fileToBeUploaded .txt‘

+0

Vielen Dank. Ich habe das überall gesucht. – Lomse

0

Zum Hochladen einer Datei in einem bestimmten Ordner in Google Eimer beginnen sollte, schrieb ich Code unten:

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

Und aus diesem Ordner Download:

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

PS Das ist in JAVA, kann ähnliche Sachen in jeder anderen Sprache machen.

Verwandte Themen