我正在开展一个项目。我将文件放在blob中,我需要将这些Azure blob文件从一个文件夹复制到另一个文件夹。我还需要创建一个zip文件。
请有人帮助我;我是新手,不知道该怎么做。
答案 0 :(得分:1)
首先,您应该告诉我们您正在使用的语言。没有说明,我将假设C#。
我将首先按照此处的Blob教程进行操作: https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/
然后我会为一个zip库安装一个nugget包。这里有一些很好的文档/样本: http://icsharpcode.github.io/SharpZipLib/ https://github.com/haf/DotNetZip.Semverd
我个人首选的图书馆是DotNetZip,因为它易于使用,并且页面上有很好的文档。
您的高级代码将是:
迭代每个容器
收集所有Blob。 将所有Blob复制到新位置。 使用Zip库来填充内容。
下面是一些示例代码,可帮助您滚动,如果您有太多blob,这可能会因内存不足异常而失败,但这应该适用于您的方案。如果出现内存不足的情况,只需一次执行一次blob而不是一次执行。
string key = "";
string accountName = "mystorageaccount";
string connectionString = "DefaultEndpointsProtocol=https;AccountName="
+ accountName + ";AccountKey=" + key;
var account = CloudStorageAccount.Parse(connectionString);
var blobClient = account.CreateCloudBlobClient();
//below line not necessary, just for demo how to get a container.
var blobContainer = blobClient.GetContainerReference("mycontainer");
List<ICloudBlob> allblobs = new List<ICloudBlob>;
foreach(CloudBlobContainer container in blobClient.ListContainers())
{
allblobs.AddRange((from ICloudBlob blob in
container.ListBlobs(useFlatBlobListing: true)
select blob));
}
答案 1 :(得分:0)
有关MSDN的好文章涵盖了Azure blob容器。 https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
// Retrieve reference to a blob named "photo1.jpg".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("photo1.jpg");
// Save blob contents to a file.
using (var fileStream = System.IO.File.OpenWrite(@"path\myfile"))
{
blockBlob.DownloadToStream(fileStream);
}
您可以使用ListBlobs方法获取所有blob,然后遍历它们以下载
CloudBlobDirectory dir = container.GetDirectoryReference("yourFolder");
var blobs = dir.ListBlobs(new BlobRequestOptions() { UseFlatBlobListing = true });
有很多第三方库可以使用zip存档,例如https://github.com/haf/DotNetZip.Semverd