データをストリーミング(アップロード)してGoogleクラウドストレージのバケットに保存し、同時にダウンロードできるようにすることは可能ですか?Cloud APIを使用して、以下のコードを使用して100 MBのファイルをバケットにアップロードしようとしましたが、アップロード中にGoogleクラウドコンソールでバケットを更新すると、アップロードが完了するまで新しいアップロードファイルが表示されません。終了しました。H.264でエンコードされたリアルタイムビデオをアップロードしてクラウドストレージに保存したいので、サイズは不明ですが、同時に他のユーザーはアップロードしているファイルイベントのダウンロードを開始できます。それでそれは可能ですか?
Test code:
File tempFile = new File("StorageSample");
RandomAccessFile raf = new RandomAccessFile(tempFile, "rw");
try
{
raf.setLength(1000 * 1000 * 100);
}
finally
{
raf.close();
}
uploadFile(TEST_FILENAME, "text/plain", tempFile, bucketName);
public static void uploadFile(
String name, String contentType, File file, String bucketName)
throws IOException, GeneralSecurityException
{
InputStreamContent contentStream = new InputStreamContent(
contentType, new FileInputStream(file));
// Setting the length improves upload performance
contentStream.setLength(file.length());
StorageObject objectMetadata = new StorageObject()
// Set the destination object name
.setName(name)
// Set the access control list to publicly read-only
.setAcl(Arrays.asList(
new ObjectAccessControl().setEntity("allAuthenticatedUsers").setRole("READER"))); //allUsers//
// Do the insert
Storage client = StorageFactory.getService();
Storage.Objects.Insert insertRequest = client.objects().insert(
bucketName, objectMetadata, contentStream);
insertRequest.getMediaHttpUploader().setDirectUploadEnabled(false);
insertRequest.execute();
}
残念ながら、ドキュメントに記載されているように、それは不可能です。
オブジェクトは不変です。つまり、アップロードされたオブジェクトは、その保存期間を通じて変更することはできません。オブジェクトの保存期間は、オブジェクトの作成(アップロード)が成功してからオブジェクトが削除されるまでの時間です。
これは、アップロードが完了するとクラウドストレージ内のオブジェクトが存在し始めるため、アップロードが完了するまでオブジェクトにアクセスできないことを意味します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加