我正在尝试使用代码从单个 Azure 容器下载所有 Blob。当我下载每个 Blob 时,我希望新文件名是从 2.jpg 向上到 3.jpg、4.jpg 5.jpg 等的连续数字。这不是 azure 容器中 Blob 的名称,我不知道代码运行时每个 Blob 的名称。
我似乎在最后一个障碍上摔倒了,我不知道要在 foreach
block 中放入什么内容才能将文件放入 \home\pi\Pictures\
我的本地硬盘上的目录。
urls.DownloadToStream(FileStream);
引发错误,
List String does not contain a definition for DownloadToStream
和
FileStream is a type which is not valid in the given context.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
using System.Configuration;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Threading;
namespace CPGetAdverts
{
class Program
{
static void Main(string[] args)
{
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureImagesConnection"].ConnectionString);
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to a container.
var container = blobClient.GetContainerReference("xxxxxx/").ListBlobs();
// Retrieve filenames from container List
var urls = new List<string>();
int fileName = 2;
foreach (var blob in container)
{
using (var fileStream = System.IO.File.OpenWrite(@"\home\pi\Pictures\"+ fileName + ".jpg")) ;
urls.DownloadToStream(FileStream);
fileName++;
}
}
}
}
非常感谢任何帮助。
最佳答案
此行有几个问题:
urls.DownloadToStream(FileStream);
- urls 是一个字符串列表,因此它不会包含
DownloadToStream
方法 FileStream
应为fileStream
尝试将循环更改为:
foreach (var blob in container)
{
using (var fileStream = System.IO.File.OpenWrite(@"\home\pi\Pictures\"+ fileName + ".jpg"))
{
var blobReference = blobClient.GetBlobReferenceFromServer(blob.Uri);
blobReference.DownloadToStream(fileStream);
fileName++;
}
}
关于c# - 从单个 Azure 容器下载所有 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35164783/