Сохранение строки в хранилище BLOB-объектов Azure и получение ссылки на BLOB-объект с помощью C#

ребята,

У меня есть код, выполняющий вызов API, возвращающий JSON, анализирующий его и сохраняющий в таблице SQL. Теперь я хотел бы взять этот JSON и также сохранить его в хранилище BLOB-объектов Azure, а затем сохранить ссылку на него в таблице SQL как отдельное поле.

Пока что у меня есть это:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
        CloudConfigurationManager.GetSetting("MyConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("mydata");
CloudBlockBlob blockBlob = container.GetBlockBlobReference(dataString);
blockBlob.UploadTextAsync(resultContent);

Что я могу сохранить в качестве эталонной строки для будущего извлечения большого двоичного объекта? Это блокблоб?


person Boris K    schedule 24.05.2017    source источник


Ответы (2)


У каждого BLOB-объекта будет такой uri, как:

https://<yourstorageaccountname>.blob.core.windows.net/containername/blobname

Это то, что вы будете хранить в своей базе данных. Вы даже можете использовать этот uri для предоставления прямой ссылки внутри вашего приложения непосредственно конечному пользователю (например, в виде ссылки на веб-странице). Примечание. Чтобы прямая ссылка работала извне (например, без учетных данных учетной записи хранения), контейнер должен быть общедоступным или вам потребуется создать подпись общего доступа, чтобы разрешить временный общедоступный доступ, если он находится в частном контейнере. .

Возможно, вы можете сохранить только имя контейнера/BLOB-объекта, но тогда, если у вас есть несколько учетных записей хранения, вам нужно будет знать, в какой из них вы его сохранили.

person David Makogon    schedule 24.05.2017
comment
Таким образом, в приведенном выше случае URI будет https://<yourstorageaccountname>.blob.core.windows.net/containername/blockBlob? - person Boris K; 24.05.2017
comment
если имя большого двоичного объекта blockBlob, то да. Тип большого двоичного объекта не встроен в uri. Если файл json mydata.json, то он будет заканчиваться на /containername/mydata.json. - person David Makogon; 24.05.2017

Ваш код можно изменить следующим образом:

CloudBlockBlob blockBlob = container.GetBlockBlobReference("datastring.json");

Позже вы можете получить это с тем же именем, например datastring.json, и вы можете сохранить то же имя большого двоичного объекта в своей базе данных.

person Hammad    schedule 24.05.2017