C # Azure Storage - Как загрузить файл в уже существующий контейнер - PullRequest
0 голосов
/ 12 мая 2018

Надеясь на небольшую помощь по загрузке файла в существующий контейнер в хранилище Azure.Я следовал за Azure doc - но, похоже, он указывает на создание нового контейнера и загрузку туда файла.Если я уже заранее создал контейнер в Azure, например, как «testresult1», а затем попытался загрузить туда файл, используя код C #, то он жалуется, что контейнер «testresult1» уже существует.

Вот неправильный код, который я использовал:

CloudBlobContainer = cloudBlobClient.GetContainerReference("testresult1");

Пример кода в документе Microsoft работает без каких-либо проблем, но создает новый контейнер "quickstartblobs" plusGUID, затем загружает файл туда.Я пытаюсь выяснить, есть ли вариант, когда контейнер уже существует, и как мы можем загрузить один или несколько файлов в этот контейнер с помощью кода, не создавая новый контейнер для каждого загруженного файла.

Соответствующийвопрос: есть ли верхний предел для того, сколько контейнеров может быть создано в хранилище Azure?Это связано с подпиской Azure?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Способ получения контейнера.

    public CloudBlobContainer GetCloudBlobContainer(string strBlobContainerName)
    {
        CloudStorageAccount storageAccount = 
CloudStorageAccount.Parse(Convert.ToString(ConfigurationManager.AppSettings["BlobConnectionString"]));
                    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
                    CloudBlobContainer blobContainer = blobClient.GetContainerReference(strBlobContainerName);

                    blobContainer.CreateIfNotExists();
                    blobContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
                    return blobContainer;
     }

Ниже приведен код для загрузки файла в Azure.

CloudBlobContainer blobContainer = new BlobStorageServiceBLL().GetCloudBlobContainer(containerName);
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(uploadedFileName);
blob.UploadFromStream(file.InputStream);

Примечание: Мой GetCloudBlobContainer метод в BlobStorageServiceBLL контроллер, который является другим файлом класса, но вы можете управлять им в том же файле класса.

0 голосов
/ 14 мая 2018

Вы можете использовать CreateIfNotExistsAsync метод, который инициирует асинхронную операцию, которая создает контейнер, если он еще не существует.

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

cloudBlobContainer = cloudBlobClient.GetContainerReference("testresult1");
await cloudBlobContainer.CreateIfNotExistsAsync();

Существует ли верхний предел количества контейнеров, которые можно создать в хранилище Azure?Связано ли это с подпиской Azure?

Максимальное количество контейнеров больших двоичных объектов , больших двоичных объектов, общих файловых файлов, таблиц, очередей, объектов или сообщений на одну учетную запись хранения без ограничений.

А максимальный размер контейнера с одним блобом составляет 500 ТиБ.Максимальное количество хранимых политик доступа для каждого контейнера BLOB-объектов равно 5.

Для получения дополнительной информации см. ограничения службы подписки Azure .

.
...