将多个Blob上传到Azure存储

时间:2020-04-19 10:38:24

标签: java azure azure-storage

我有以下代码,可以使用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);
        }
    }

1 个答案:

答案 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);

测试:

enter image description here

在V12 sdk中找不到这种方法,只有在问题中使用的upload方法。实际上,在内部的uploadFromByteArray方法中,它也是upload方法。

enter image description here

如果您要批量引用多个Blob,那么恐怕除使用for循环外,它在官方sdk中不受支持。关于批量写入,您可以参考提到的Azure CLI和AzCopy方案在此document中。