Ich bin sehr neu auf der GC-Plattform und versuche, eine API in Java mit zwei Methoden zu erstellen: eine, die eine Liste aller Dateien in einem bestimmten Bucket und eine andere, die eine zurückgibt angegebene Datei aus diesem Bucket. Ziel ist es, die Dateiliste iterieren zu können, um jede Datei aus dem Bucket herunterladen zu können. Im Wesentlichen möchte ich den Inhalt des Buckets auf einem Android-Gerät spiegeln, sodass die API von einer generierten Client-Bibliothek in einer Android-App aufgerufen wird. Meine getFileList()
Methode gibt ein ListResult
Objekt zurück. Wie extrahiere ich eine Liste von Dateien daraus?Google Cloud Endpoint Bucket Downloader
@ApiMethod(name = "getFileList", path = "getFileList", httpMethod = ApiMethod.HttpMethod.GET)
public ListResult getFileList(@Named("bucketName") String bucketName) {
GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
ListResult result = null;
try {
result = gcsService.list(bucketName, ListOptions.DEFAULT);
return result;
} catch (IOException e) {
return null; // Handle this properly.
}
}
Außerdem bin ich kämpfen, um zu bestimmen, was der Rückgabetyp meiner getFile()
API-Methode sein sollte. Ich kann kein Byte-Array verwenden, da Rückgabetypen keine einfachen Typen sein können, wie ich es verstehe. Dies ist, wo ich mit ihm bin:
@ApiMethod(name = "getFile", path = "getFile", httpMethod = ApiMethod.HttpMethod.GET)
public byte[] getFile(@Named("bucketName") String bucketName, ListItem file) {
GcsService gcsService = GcsServiceFactory.createGcsService();
GcsFilename gcsFilename = new GcsFilename(bucketName, file.getName());
ByteBuffer byteBuffer;
try {
int fileSize = (int) gcsService.getMetadata(gcsFilename).getLength();
byteBuffer = ByteBuffer.allocate(fileSize);
GcsInputChannel gcsInputChannel = gcsService.openReadChannel(gcsFilename, 0);
gcsInputChannel.read(byteBuffer);
return byteBuffer.array();
} catch (IOException e) {
return null; // Handle this properly.
}
}
ich für diese Sachen in der Google-Dokumentation bin verloren und bin besorgt darüber, dass ich es, da alle aus völlig falschen Richtung komme ich sicher zu tun versuche, ist ein Download Haufen von Dateien!
Großartig. Vielen Dank dafür! Ich werde dich wissen lassen, wie ich weitergehe ... – user3352488
habe nur eine kleine Änderung an der 'getStorage()' Methode gemacht, für fazile init; Ich habe das in meinem Code und habe es zuerst entfernt; –