Не удается загрузить файл в хранилище BLOB-объектов Azure из моей формы - PullRequest
2 голосов
/ 27 июня 2019

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

  1. Мне нужно сохранить на BLOB-объекте и сохранить URL-адрес, сохраненный нахранилище BLOB-объектов Azure.
  2. Я получаю файл из формы на контроллере, используя класс для анализа данных.
  3. Контроллер обрабатывает файл и подключается к хранилищу BLOB-объектов Azure.
  4. В хранилище больших двоичных объектов нет примеров использования его методов в документации.
  5. Все примеры, которые я обнаружил, просто показывают, как загрузить из локальной папки.

Послекод, проблема до сих пор в том, что формат переменной myFile передается в метод UploadFromStreamAsync.

 // the controller starts here
  [HttpPost]
         public async System.Threading.Tasks.Task<ActionResult> Index(IFormFile arquivo)
         { //here I am receving the file
             var myFile = arquivo.FileItem;
             var myFileName = arquivo.FileName;

 // here is the connection with blob account 
             string storageConnection = ConfigurationManager.AppSettings["BlobStorageString"];
             string accountBlob = ConfigurationManager.AppSettings["BlobStorageAccount"];

             var storageAccount = CloudStorageAccount.Parse(storageConnection);
             var cloudBlobClient = storageAccount.CreateCloudBlobClient();

             CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("hurrblobstest");
             await cloudBlobContainer.CreateAsync();

             var cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference("filname12");

 // here I am trying to send the file
             await cloudBlockBlob.UploadFromStreamAsync(myFile);
             var result = JsonConvert.SerializeObject(cloudBlockBlob);

 //here I need to return the url or the object with the file info on the azure blob storage
             return Json(result);
         }

Я получаю сообщение о: await cloudBlockBlob.UploadFromStreamAsync(myFile);, сообщающее, что файл

HttpPostedFileBase не может быть преобразован в System.IO.Stream

1 Ответ

1 голос
/ 27 июня 2019

Ну, я говорю, если что-то хочет поток, дайте ему поток:

using (Stream stream = myFile.OpenReadStream())
{
    await cloudBlockBlob.UploadFromStreamAsync(stream);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...