Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java sdk在Azure Blob存储中上载单个视频文件的多个块?_Java_Azure_Azure Blob Storage_Azure Java Sdk - Fatal编程技术网

如何使用java sdk在Azure Blob存储中上载单个视频文件的多个块?

如何使用java sdk在Azure Blob存储中上载单个视频文件的多个块?,java,azure,azure-blob-storage,azure-java-sdk,Java,Azure,Azure Blob Storage,Azure Java Sdk,我想将一个巨大的文件作为单个文件从s3(4.5GB大小)传输到Azure blob存储。 由于它是一个巨大的文件,我们正试图将该s3文件分成块大小为5MB的多个块。每个区块都上载到azure blob存储,最后我希望将所有区块重新组装到azure中的单个blob文件中(或者)我上载到azure blob存储的每个区块都应将其附加到现有区块中 如果我们对此有任何解决方案,请尽快帮助我?Azure存储支持分块上传。您可以“暂存”数据块,然后在上载完所有数据块后,可以将暂存的数据块“提交”到单个blo

我想将一个巨大的文件作为单个文件从s3(4.5GB大小)传输到Azure blob存储。 由于它是一个巨大的文件,我们正试图将该s3文件分成块大小为5MB的多个块。每个区块都上载到azure blob存储,最后我希望将所有区块重新组装到azure中的单个blob文件中(或者)我上载到azure blob存储的每个区块都应将其附加到现有区块中


如果我们对此有任何解决方案,请尽快帮助我?

Azure存储支持分块上传。您可以“暂存”数据块,然后在上载完所有数据块后,可以将暂存的数据块“提交”到单个blob

新的Java SDK提供了具有用于暂存和提交块的API的
BlockBlobClient
(和
BlockBlobBasyncClient

用这个来

以下是一个示例:

BlockBlobClient BlockBlobClient=new SpecializedBlobClientBuilder()
.connectionString(“”)
.containerName(“”)
.blobName(“”)
.buildBlockBlobClient();
字符串chunkId1=Base64.getEncoder().encodeToString(“1.getBytes());
字符串chunkId2=Base64.getEncoder().encodeToString(“2.getBytes());
字符串chunkId3=Base64.getEncoder().encodeToString(“3.getBytes());
byte[]chunk1Bytes=“chunk 1.”.getBytes();
byte[]chunk2Bytes=“chunk 2.”.getBytes();
byte[]chunk3Bytes=“chunk 3.”.getBytes();
ByteArrayInputStream chunk1=新的ByteArrayInputStream(chunk1字节);
ByteArrayInputStream chunk2=新的ByteArrayInputStream(chunk2字节);
ByteArrayInputStream chunk3=新的ByteArrayInputStream(chunk3字节);
//第三阶段大厦
blockBlobClient.stageBlock(chunkId1、chunk1、chunk1Bytes.length);
blockBlobClient.stageBlock(chunkId2、chunk2、chunk2Bytes.length);
blockBlobClient.stageBlock(chunkId3、chunk3、chunk3Bytes.length);
//提交所有3个块-chunkID的顺序很重要
BlockBlobItem BlockBlobItem=blockBlobClient.commitBlockList(Arrays.asList(chunkId1、chunkId2、chunkId3));
ByteArrayOutputStream outputStream=新建ByteArrayOutputStream();
blockBlobClient.download(outputStream);
System.out.println(新字符串(outputStream.toByteArray());//打印块1。块2。块3

为什么不使用azcopy为您完成所有工作?首先,感谢您的解决方案。这种方法在使用Azure CLI时有效。我们不喜欢共享Amazon access的密钥。我们希望以流的形式从AmazonS3多部分下载,并以流的形式将其发送回azure blob存储。有没有办法将多个块上载到Azure存储中的单个文件blob?