将多个 Blob 上传到 Azure 存储

Posted

技术标签:

【中文标题】将多个 Blob 上传到 Azure 存储【英文标题】:Upload multiple blobs to Azure Storage 【发布时间】:2020-08-01 19:19:05 【问题描述】:

我有以下代码可以使用 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】:

有什么方法可以传递字节数组的集合并在一些 那种批量上传?

在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,恐怕官方sdk不支持,除了使用for循环。关于批量写入,你可以参考这里提到的Azure CLI和AzCopy场景document.

【讨论】:

以上是关于将多个 Blob 上传到 Azure 存储的主要内容,如果未能解决你的问题,请参考以下文章

通过 Azure Front Door 将文件上传到 Blob 存储

将 Blob 的上传大小限制到 Azure Blob 存储

将图像上传到 Azure Blob 存储

从 SFTP 服务器将文件上传到 Azure 存储 Blob

Flutter AZURE BLOB IMAGE UPLOAD - 如何将使用移动相机拍摄的图像上传到 azure blob 存储

将签名上传到 Azure Blob 存储