2
是否可以將數據流(Upload)存儲在Google雲存儲桶中並允許同時下載? 我試圖使用Cloud API上傳一個100MB文件到存儲桶,但使用下面的代碼,但在上傳期間,我刷新了Google雲端控制檯中的存儲桶,直到上傳時才能看到新的上傳文件完成。我想上傳用H.264編碼的實時視頻以存儲在雲存儲上,因此其大小未知,與此同時,其他用戶可以開始下載正在上傳的文件事件。那有可能嗎?是否可以將數據流(Upload)存儲在Google雲存儲桶中並允許同時下載?
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();
}
感謝您的回覆。所以你有什麼建議我可以做我期望的功能嗎?謝謝 –
一個可能的解決方案,將用特定的命名約定將大對象分成更小的塊。通過這種方式,一旦小對象被上傳,用戶就可以開始流式傳輸內容。您將需要處理智能緩衝和對不同對象的迭代,以便爲用戶提供流暢的體驗。 –