将多个 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 存储
从 SFTP 服务器将文件上传到 Azure 存储 Blob
Flutter AZURE BLOB IMAGE UPLOAD - 如何将使用移动相机拍摄的图像上传到 azure blob 存储