web-dev-qa-db-ja.com

大きなファイルをGCPCloud Storageにアップロードするにはどうすればよいですか?

GCP CloudStorageにアップロードする3GBのサイズのデータ​​ファイルがあります。 GCPオブジェクトのアップロードチュートリアルの例を試してみました。しかし、アップロードしようとすると、次のエラーが発生しました。

Java.lang.OutOfMemoryError: Required array size too large

私は次のように試しました、

BlobId blobId = BlobId.of(gcpBucketName, "ft/"+file.getName());
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();
Blob blob = storage.get().create(blobInfo, Files.readAllBytes(Paths.get(file.getAbsolutePath())));
return blob.exists();

どうすればこれを修正できますか? GCP Cloud storage Java clientを使用して大きなファイルをアップロードする方法はありますか?

7
codebot

これは、Files.readAllBytesによって返される配列の 許可されている最大サイズよりも大きい であるために発生しています。

実行できる回避策は、ファイルをバイトの複数の配列に分割し、それらを個別のファイルとしてバケットにアップロードし、 gsutil compose command を使用してそれらを結合することです。

1
mgoya