Как поместить BLOB в корень, а не в $ root? - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь использовать пакет NuGet WindowsAzure.Storage C # для загрузки BLOB-объекта в корневой контейнера.Если я сделаю следующее:

var AZURE_CONNECTION_STRING_TEMPLATE = "DefaultEndpointsProtocol=http;AccountName={0};AccountKey={1};BlobEndpoint={2};";
var string AZURE_ACCOUNT_NAME = "devstoreaccount1";
var string AZURE_ACCOUNT_KEY = "abcd-redacted";
var string AZURE_BLOB_ENDPOINT = "http://127.0.0.1:10000/devaccount1/mycontainer";

var azureBlobConnectionString = string.Format(
  AZURE_CONNECTION_STRING_TEMPLATE,
  AZURE_ACCOUNT_NAME,
  AZURE_ACCOUNT_KEY,
  AZURE_BLOB_ENDPOINT);

var container = serviceClient.GetRootContainerReference();
var blob = container.GetBlockBlobReference(Path.GetFileName(FILE_TO_UPLOAD));

Большой объект заканчивается в контейнере с именем $root, и он фактически не отображается в «корне» контейнера.Если я попробую следующее:

var container = serviceClient.GetContainerReference("/");

Это заканчивается в контейнере с именем <no name>.

Я хочу, чтобы файл находился в корне контейнера с именем mycontainer.

1 Ответ

0 голосов
/ 09 октября 2018

Вы должны добавить указанный контейнер в метод GetContainerReference ():

Код, подобный приведенному ниже:

  string StorageConnectionString = "DefaultEndpointsProtocol=https;AccountName=your_account;AccountKey=your_key;EndpointSuffix=core.windows.net";

  CloudStorageAccount storageAccount = CloudStorageAccount.Parse(StorageConnectionString);
  var client = storageAccount.CreateCloudBlobClient();
  var container = client.GetContainerReference("t11");
  var cloudBlockBlob =  container.GetBlockBlobReference(@"test1234.txt");
  cloudBlockBlob.UploadFromFile(@"d:\test1234.txt");

он загрузит ваш файл в указанный контейнер.

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