Как загрузить файл хранилища больших двоичных объектов Azure по URL - PullRequest
0 голосов
/ 23 июня 2019

Мы создали структуру папок в хранилище Azure, как показано ниже:

parentcontainer -> childcontainer -> {pdffiles are uploaded here}

У нас есть URL-адрес сохраненных .pdf файлов. Мы не хотим жестко кодировать любое имя контейнера, просто загрузите файл, используя его URL.

Наша текущая попытка сделать это:

CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(StorageConnectionString);
CloudBlobClient blobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = blobClient.GetRootContainerReference();
CloudBlockBlob blockBlob = cloudBlobContainer.GetBlockBlobReference(pdfFileUrl);

var blobRequestOptions = new BlobRequestOptions
{
    RetryPolicy = new NoRetry()
};

// Read content
using (MemoryStream ms = new MemoryStream())
{
    blockBlob.DownloadToStream(ms, null, blobRequestOptions);
    var array = ms.ToArray();
    return ms.ToArray();
}     

Но мы получаем «400 неверных запросов» здесь:

 blockBlob.DownloadToStream(ms, null, blobRequestOptions);

Как загрузить файл хранилища больших двоичных объектов Azure, используя только его URL-адрес?

1 Ответ

4 голосов
/ 23 июня 2019

GetBlockBlobReference принимает имя файла в качестве аргумента в своем конструкторе, а не URL.

Чтобы загрузить элемент хранилища больших двоичных объектов Azure по его URL-адресу, необходимо создать экземпляр CloudBlockBlob самостоятельно, используя URL-адрес элемента:

var blob = new CloudBlockBlob(new Uri(pdfFileUrl), cloudStorageAccount.Credentials);

Этот blob может быть загружен с кодом, который вы первоначально разместили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...