2015-04-13 6 views

Antwort

20

Stellt sich heraus, die Sie nicht brauchen um überhaupt irgendwelche Einstellungen vorzunehmen. Ich nahm an, dass es beim Upload mit dem Blobstore einen Namen mit einem bestimmten Namen gab und einer wurde automatisch für mich erstellt.

Übrigens scheint es nirgendwo dokumentiert zu sein, wie man Dateien im Speicher des Entwicklungsservers durchsuchen kann. Sie können dies tun, indem Sie die Entität __GsFileInfo__ im Administratorzugriff auf den Datastore Viewer auf Ihren lokalen Entwicklungsserver auswählen.

4

Sie müssen die Google Cloud Storage Client Library für App Engine herunterladen und integrieren.

Diese Bibliothek bietet Ihnen die GcsService die die BlobstoreService ähnlich ist, so können Sie eine Datei schreiben, um eine Datei lesen, sofern eine Datei und andere Funktionen von Cloud Storage

Wenn Sie den Code verwenden, löschen in die Entwicklungsumgebung, die hochgeladenen Dateien im Ordner gespeichert werden und die eine __GsFileInfo__ Einheit wird in der lokalen Datenspeicher erstellt, die die Metadaten der Datei

Diese Bibliothek funktioniert auch online angebracht bewahrt, so dass Ihr Code für beide Entwicklung arbeiten und Produktionsumgebungen.

Hier können Sie die Getting Started Führer finden und die vollständige JavaDoc Referenz

+0

Ich glaube nicht, dass Sie die Client-Bibliothek benötigen. Sie müssen das nur tun, wenn Sie über die Bibliotheksfunktionen auf den Speicher zugreifen müssen. Ich schreibe mit dem Blobstore in den Laden, also brauche ich die Client-Bibliothek nicht. Es scheint, als würde die Einrichtung der Buckets automatisch erfolgen, wenn Sie sie verwenden. Daher ist überhaupt keine Einrichtung erforderlich. Siehe meine Antwort. – user2771609

7

Für diejenigen, die versuchen Google Cloud Storage zu bekommen überhaupt von ihrem lokalen Java-Entwicklung App-Server zu arbeiten, dachte ich noch eine Antwort hilfreich wäre. Es gelang mir, meinen lokalen Dev-App-Server mit nicht-lokalem Google Cloud Storage zu arbeiten, aber ich musste nur den Code durchforsten und herausfinden, was benötigt wurde - es scheint keine Dokumentation darüber zu geben.

Ziel wird es sein, diesen Code-Block zu erhalten lokal zu arbeiten, die eine Datei von GCS liest:

GcsService gcsService = 
     GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance()); 
    int fileSize = (int) gcsService.getMetadata(gcsFilename).getLength(); 
    ByteBuffer byteBuffer = ByteBuffer.allocate(fileSize); 
    GcsInputChannel inputChannel = gcsService.openReadChannel(gcsFilename, 0); 
    int readResult = inputChannel.read(byteBuffer); 
    byte[] fileBytes = byteBuffer.array(); 

Wenn Sie versuchen, dies vor Ort zu tun, werden Sie keine Dateien finden, Sie haben Upload zu GCS, da versucht wird, ein gefälschtes lokales GCS zu verwenden. Leider habe ich keinen guten Weg gefunden, um dieses lokale GCS hochzuladen, also ist das nicht sehr nützlich (es gibt keinen Datei-Explorer dafür wie in der Cloud-Version, und gsutil funktioniert nicht dafür). Stattdessen werden wir es mit nicht-lokalen (Cloud-) GCS verwenden, wenn es auf dem lokalen Dev-App-Server ausgeführt wird.

, das zu tun, dass GcsService beachten Sie in com.google.appengine.tools.cloudstorage.GcsServiceFactory von diesem Codeblock erstellt wird:

if (location == SystemProperty.Environment.Value.Production || hasCustomAccessTokenProvider()) { 
    rawGcsService = OauthRawGcsServiceFactory.createOauthRawGcsService(builder.build()); 
} else if (location == SystemProperty.Environment.Value.Development) { 
    rawGcsService = LocalRawGcsServiceFactory.createLocalRawGcsService(); 
Die oben

sagt, dass Sie einen benutzerdefinierten Zugriffstoken angeben müssen Anbieter, um den nicht-lokalen Dienst zu erhalten, den Sie tun, indem Sie eine Systemeigenschaft definieren. Für eine App Engine-App können Sie, dass in appengine-web.xml wie folgt tun:

<system-properties> 
    <property name="gcs_access_token_provider" value="com.mypackage.MyAccessTokenProvider" /> 
</system-properties> 

Dieser Wert dieser Eigenschaft ist eine Klasse, die Sie definieren, dass implementiert com.google.appengine.tools.cloudstorage.oauth.AccessTokenProvider, der das Zugriffstoken für Ihre App bereitstellt. Diese Klasse muss ein GoogleCredential erstellen, das zum Abrufen eines Zugriffstokens verwendet werden kann, indem Sie die Anweisungen für "Andere" für ein GoogleCredential unter https://developers.google.com/identity/protocols/OAuth2ServiceAccount#authorizingrequests verwenden.

Jetzt wird ein OAuth-GcsService erstellt, der mit der Cloud kommuniziert und Sie müssen den gefälschten lokalen Speicher nicht verwenden.