我有以下代码,可以使用azure-storage-blob 12.5.0
将单个Blob上传到Azure存储。
有什么方法可以传递字节数组的集合并以某种批量上传的方式进行?
public void store(final String blobPath, final String originalFileName, final byte[] bytes) {
final BlobClient blobClient = containerClient.getBlobClient(blobPath);
final BlockBlobClient blockBlobClient = blobClient.getBlockBlobClient();
try (ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes)) {
blockBlobClient.upload(inputStream, bytes.length, true);
} catch (BlobStorageException | IOException exc) {
throw new StorageException(exc);
}
}
答案 0 :(得分:1)
是否可以通过某种方式传递字节数组的集合并以某种方式执行 批量上传?
在V8 SDK中,我发现uploadFromByteArray
方法支持byte []参数。
CloudBlockBlob blob = container.getBlockBlobReference("helloV8.txt");
String str1 = "132";
String str2 = "asd";
ByteArrayOutputStream os = new ByteArrayOutputStream();
os.write(str1.getBytes());
os.write(str2.getBytes());
byte[] byteArray = os.toByteArray();
blob.uploadFromByteArray(byteArray, 0, byteArray.length);
测试:
在V12 sdk中找不到这种方法,只有在问题中使用的upload
方法。实际上,在内部的uploadFromByteArray
方法中,它也是upload
方法。
如果您要批量引用多个Blob,那么恐怕除使用for
循环外,它在官方sdk中不受支持。关于批量写入,您可以参考提到的Azure CLI和AzCopy方案在此document中。