Upload a Single File to Blob Storage Azure

前端 未结 3 775
你的背包
你的背包 2020-12-05 04:35

How can I to Upload a file with C# ? I need to upload a file from a dialogWindow.

相关标签:
3条回答
  • 2020-12-05 05:06

    we can use BackgroundUploader class ,Then we need to provide StorageFile object and a Uri: Required Namespaces:

    using System;
    using System.Collections.Generic;
    using System.Threading;
    using System.Threading.Tasks;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.Networking.BackgroundTransfer;
    using Windows.Storage.Pickers;
    using Windows.Storage;
    

    The process is Like This : Uri is defined using a string value provided via a UI input field, and the desired file for upload, represented by a StorageFile object, is returned when the end-user has selected a file through the UI provided by the PickSingleFileAsync operation

    Uri uri = new Uri(serverAddressField.Text.Trim());
    FileOpenPicker picker = new FileOpenPicker();
    picker.FileTypeFilter.Add("*");
    StorageFile file = await picker.PickSingleFileAsync();
    

    and Then:

    BackgroundUploader uploader = new BackgroundUploader();
    uploader.SetRequestHeader("Filename", file.Name);
    UploadOperation upload = uploader.CreateUpload(uri, file);
    
    // Attach progress and completion handlers.
    await HandleUploadAsync(upload, true);
    

    Thats All

    0 讨论(0)
  • 2020-12-05 05:21

    Here is the complete method.

     [HttpPost]
            public ActionResult Index(Doctor doct, HttpPostedFileBase photo)
            {
    
                try
                {
                    if (photo != null && photo.ContentLength > 0)
                    {
                        // extract only the fielname
                        var fileName = Path.GetFileName(photo.FileName);
                        doct.Image = fileName.ToString();
    
                        CloudStorageAccount cloudStorageAccount = DoctorController.GetConnectionString();
                        CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
                        CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("images");
    
    
                        string imageName = Guid.NewGuid().ToString() + "-" +Path.GetExtension(photo.FileName); 
    
                        CloudBlockBlob BlockBlob = cloudBlobContainer.GetBlockBlobReference(imageName);
    
                        BlockBlob.Properties.ContentType = photo.ContentType;
                        BlockBlob.UploadFromStreamAsync(photo.InputStream);
                        string imageFullPath = BlockBlob.Uri.ToString();
    
                        var memoryStream = new MemoryStream();
    
    
                        photo.InputStream.CopyTo(memoryStream);
                        memoryStream.ToArray();
    
    
    
                        memoryStream.Seek(0, SeekOrigin.Begin);
                        using (var fs = photo.InputStream)
                        {
                            BlockBlob.UploadFromStreamAsync(memoryStream);
                        }
    
                    }
                }
                catch (Exception ex)
                {
    
                }
    
    
                return View();
            }
    

    where the getconnectionstring method is this.

     static string accountname = ConfigurationManager.AppSettings["accountName"];
          static  string key = ConfigurationManager.AppSettings["key"];
    
    
                public static CloudStorageAccount GetConnectionString()
                {
    
                    string connectionString = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", accountname, key);
                    return CloudStorageAccount.Parse(connectionString);
                }
    
    0 讨论(0)
  • 2020-12-05 05:23
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Auth;
    using Microsoft.WindowsAzure.Storage.Blob;    
    
    // Retrieve storage account from connection string.
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse("StorageKey");
    
    // Create the blob client.
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    
    // Retrieve reference to a previously created container.
    CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
    
    // Retrieve reference to a blob named "myblob".
    CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");
    
    // Create or overwrite the "myblob" blob with contents from a local file.
    using (var fileStream = System.IO.File.OpenRead(@"path\myfile"))
    {
        blockBlob.UploadFromStream(fileStream);
    }
    

    see here about needed SDK and references

    i think it's what you need

    0 讨论(0)
提交回复
热议问题