Wil*_*lli 4 java powershell blob azure
有人可以帮忙吗?我正在关注 Java JDK 示例,其中有很多关于如何管理容器和 blob 的示例,但是没有说明如何从一个存储容器移动到另一个存储容器。
例如,我在 StorageOne/ContainerOne/BlobName 上有一个 blob 需要移动到 Storage2/ContainerTwo/BlobName
我正在查看这个网站https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/storage/azure-storage-blob/README.md但没有运气。
我还设法通过 ConnectionString 进行连接并创建、下载 blob,但无法弄清楚如何移动。
任何建议都会有帮助。我也尝试过在Azure中创建一个App Function来做到这一点,但是我的powershell技能并不好。
谢谢
如果要将 blob 从一个存储容器复制到另一个存储容器,可以使用beginCopy方法,首先使用getBlobUrl方法获取源 blob url ,然后将其传递。
如果您想要示例,可以参考此 github 示例:BlobAsyncClientBaseJavaDocCodeSnippets。
如果你想将一个 blob 从源容器移动到另一个容器,并且它不存在于源容器中,目前没有直接的方法可以实现,你可以先复制该 blob,在复制活动之后,然后使用 delete 删除源blob方法。
实际上从所有这些方法链接中你可以发现它们都提供了 github 示例,只需遵循项目结构即可。
更新:如果您想要示例代码,您可以参考我的下面的代码,我已经测试过它可以工作。
String connectStr = "storage account connection string";
// Create a BlobServiceClient object which will be used to create a container client
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("test");
BlobContainerClient destcontainer=blobServiceClient.getBlobContainerClient("testcontainer");
PagedIterable<BlobItem> blobs= containerClient.listBlobs();
for (BlobItem blobItem : blobs) {
System.out.println("This is the blob name: " + blobItem.getName());
BlobClient blobClient=containerClient.getBlobClient(blobItem.getName());
BlobServiceSasSignatureValues sas = new BlobServiceSasSignatureValues(OffsetDateTime.now().plusHours(1),
BlobContainerSasPermission.parse("r"));
String sasToken = blobClient.generateSas(sas);
BlobClient destblobclient=destcontainer.getBlobClient(blobItem.getName());
destblobclient.beginCopy(blobClient.getBlobUrl()+ "?" + sasToken,null);
}
Run Code Online (Sandbox Code Playgroud)
更新:
String connectStr = "source storage account connection string";
String destconnectStr="destination storage account connection string";
// Create a BlobServiceClient object which will be used to create a container client
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
BlobServiceClient destblobServiceClient = new BlobServiceClientBuilder().connectionString(destconnectStr).buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("test");
BlobContainerClient destcontainer=destblobServiceClient.getBlobContainerClient("destcontainer");
PagedIterable<BlobItem> blobs= containerClient.listBlobs();
for (BlobItem blobItem : blobs) {
System.out.println("This is the blob name: " + blobItem.getName());
BlobClient blobClient=containerClient.getBlobClient(blobItem.getName());
BlobClient destblobclient=destcontainer.getBlobClient(blobItem.getName());
destblobclient.beginCopy(blobClient.getBlobUrl(),null);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3852 次 |
| 最近记录: |