2015-07-04 3 views
0

Я следую официальной документации по загрузке Azure Blob, и я успешно реализовал функцию загрузки блога. Однако после загрузки загружается страница, и мне нужно сделать ее так, чтобы изображение загружалось без обновления страницы. В принципе нет обратной передачи.Azure Загрузить Blob без обновления страницы

Вот что я до сих пор:

 if (profile_pic_input.HasFile) 
     { 
       var image = Request.Files["profile_pic_input"]; 

       CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]); 
       CloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient(); 
       CloudBlobContainer container = blobStorage.GetContainerReference("photos"); 
       if (container.CreateIfNotExists()) 
       { 
        // configure container for public access 
        var permissions = container.GetPermissions(); 
        permissions.PublicAccess = BlobContainerPublicAccessType.Container; 
        container.SetPermissions(permissions); 
       } 


       String tempName = GeneratePictureName(); 
       string uniqueBlobName = string.Format("photos/image_{0}{1}", tempName, Path.GetExtension(image.FileName)); 
       CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName); 



       blob.Properties.ContentType = image.ContentType; 
       blob.UploadFromStream(image.InputStream); 
     } 

ответ

2

Чтобы избежать постбэк, вам нужно будет использовать AJAX. Большинство общих фреймворков JavaScript, таких как jQuery, поддерживают это.

Сейчас подходит к загрузке файлов в хранилище больших двоичных объектов с использованием AJAX, существует два способа сделать это:

  1. Загрузить непосредственно в Blob Storage из браузера пользователя: Если ваши пользователи используют современные браузеры, поддерживающие HTML5, тогда они могут напрямую загружать файлы со своих локальных компьютеров в хранилище blob. См. Эту ссылку для получения более подробной информации: https://msdn.microsoft.com/en-us/library/azure/hh824678.aspx. По существу, вы должны создать Shared Access Signature с разрешением не менее Write и разрешить запросы кросс-происхождения (CORS) из вашего веб-приложения на ваш аккаунт хранилища. Таким образом, файлы передаются непосредственно в учетную запись хранилища. Я также написал сообщение в блоге о том же, что вы можете найти полезным: http://gauravmantri.com/2013/12/01/windows-azure-storage-and-cors-lets-have-some-fun/.

  2. Загрузите файлы из браузера своего пользователя на свой веб-сервер, а затем передайте файл в хранилище blob. Если вы ищете AJAX и загрузку файлов, я уверен, что вы найдете много ресурсов, которые расскажут вам, как это будет работать.

Моей рекомендацией было бы пойти с опцией №1, поскольку она намного быстрее и не перегружает ваши веб-серверы.

+0

Спасибо Gaurav. Я действительно приземлился на ваш сайт и прочитал эту статью несколько минут назад, прежде чем вы отправили сообщение. Вей информативный. Однако это кажется немного сложным. Все в порядке, я попробую. Где в этом коде он ищет файл загружаемого файла, который необходимо загрузить? – Dinuka

+0

Пожалуйста, смотрите функцию 'reader.onloadend' в своем сообщении в блоге. Вот где происходит загрузка магии :). Раздел «Веб-приложение» - это то, что вы хотите прочитать и понять. –

+0

Поскольку это консольное приложение, в моем случае, какой метод мне нужно добавить в кнопку загрузки, нажмите «Матч»? Не могли бы вы объяснить это, используя ответ? Основная помощь, Gaurav – Dinuka

Смежные вопросы