简体   繁体   中英

Can´t upload file to Azure Blob Storage from my form

I need to upload a file from a form on the front-end, passing through the backend into the azure blob storage.

  1. I need save on the blob, and get the url saved on azure blob storage.
  2. I am receiving the file from the form on controller using a class to parse the data.
  3. The controller deals with the file and connect on the azure blob storage.
  4. The blob storage doesn't have example on his methods on documentation.
  5. All examples that I found just show how to upload from a local folder.

Following the code, the problem so far is the format of the myFile var is being passed on the method 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);
         }

I am getting a message on the: await cloudBlockBlob.UploadFromStreamAsync(myFile); that tells me that the file

HttpPostedFileBase cannot be converted into System.IO.Stream

Well, I say if something wants a stream, give it a stream:

using (Stream stream = myFile.OpenReadStream())
{
    await cloudBlockBlob.UploadFromStreamAsync(stream);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM