UPD: вот мое реализовано решение этой проблемы
Я пытаюсь загрузить в Azure blob-хранилище через библиотеку Azure.Storage(а не REST API) и аутентифицироваться через общий ключ доступа.
Я видел этот сообщение в блоге, но API изменился со времени публикации, и теперь я не могу получить тот же результат.
Вот что у меня есть:
var blobClient = new CloudBlobClient(new Uri(blobWithSas.BaseUri), new StorageCredentials(blobWithSas.Sas));
// here I receive 404 error
var blob = blobClient.GetBlobReferenceFromServer(new Uri(blobWithSas.AbsoluteUri));
using (var stream = new FileStream(fullFilePath, FileMode.Open))
{
blob.UploadFromStream(stream);
}
Имея:
blobWithSas.BaseUri
= http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24
(Guid - это имя контейнера, уже существующее, созданное где-то еще.)
blobWithSas.Sas
= ?sv=2012-02-12&se=2013-06-23T03%3A04%3A53Z&sr=b&sp=w&sig=NaMqgXRMXDFvLAp8LTskgplAKp%2B9LCZzq8WK9Zo35x8%3D
(также выдается в другом месте в коде)
blobWithSas.AbsoluteUri
= http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24/foldername/filename.txt
Blob не существует, я хочу загрузить новый файл и создать blob. У меня есть приложение "Сервер", содержащее ключ доступа к учетной записи Azure Storage. Сервер выдает SAS клиентам и клиентам, загружающим файлы непосредственно в Azure. Таким образом, SAS будет писать только, без чтения, а клиенты будут создавать файлы, где сервер сообщает им (контейнер, имена папок)
Проблема возникает при GetBlobReferenceFromServer
- я получаю 404 ошибку от Azure Storage. Да, blob не существует и ссылки нет. Итак, учитывая CloudBlobClient, как я могу загрузить файл в blob?
p.s. Я понимаю, что для этого есть REST API. Но я раньше использовал библиотеку Microsoft.WindowsAzure.Storage
и хотел бы, если возможно, избегать службы REST.