2016-11-07 3 views
1

Возможно ли, что URL-адрес CloudBlockBlob.UploadFromStreamAsync для изображений? Я пытаюсь использовать базовый профиль LinkedIn api для получения URL-адреса изображения пользователя (уже есть URL-адрес), и я пытаюсь загрузить, а затем загрузить изображение в Azure Blob, например, они выбрали картинку со своего компьютера.Загрузить изображение в хранилище Azure Blob по адресу

Вот как это выглядит сейчас:

using (Html.BeginForm("UploadPhoto", "Manage", FormMethod.Post, new { enctype = "multipart/form-data" })) 
      { 
       <div class="browseimg"> 
        <input type="file" class="display-none" name="file" id="files" onchange="this.form.submit()" /> 
       </div> 
      } 
      <button class="btn btn-primary width-100p main-bg round-border-bot" id="falseFiles"> 
       Upload billede 
      </button> 

Метод в контроллере:

public async Task<ActionResult> UploadPhoto(HttpPostedFileBase file) 
     { 

      if (file != null && file.ContentLength > 0) 
      { 
       var fileExt = Path.GetExtension(file.FileName); 
       if (fileExt.ToLower().EndsWith(".png") || fileExt.ToLower().EndsWith(".jpg") || 
        fileExt.ToLower().EndsWith(".gif")) 
       { 
        var user = await GetCurrentUserAsync(); 
        await service.Upload(user.Id, file.InputStream); 
       } 
      } 
      return RedirectToAction("Index"); 
     } 
+0

Нет, не представляется возможным, но от того, что я вижу, что вы загружаете в виде файла не в URL, вы вручную загрузить изображения? – SilentTremor

+0

Да, это метод, который берет файл, который вы выбрали со своего ПК, и загружает его. Как-то это должно быть возможно. Я попытаюсь поместить его в поток из чтения URL-адреса и загрузки этого потока или чего-то еще. – crystyxn

+0

Я создаю для вас что-то простое, чтобы сделать это. – SilentTremor

ответ

0

Похоже, все, что мне нужно было просто

WebClient wc = new WebClient(); 
MemoryStream stream = new MemoryStream(wc.DownloadData("https://media.licdn.com/mpr/...")); 

, а затем

await service.Upload(user.Id, stream); 
2

Ниже метод загрузку файлов (URL) в лазурных cloudblob

Примечание: Вход для этого метода, например

файл = "http://example.com/abc.jpg" и ImageName = "myimage .jpg ";

public static void UploadImage_URL(string file, string ImageName) 
     { 
      string accountname = "<YOUR_ACCOUNT_NAME>"; 

      string accesskey = "<YOUR_ACCESS_KEY>"; 

      try 
      { 

       StorageCredentials creden = new StorageCredentials(accountname, accesskey); 

       CloudStorageAccount acc = new CloudStorageAccount(creden, useHttps: true); 

       CloudBlobClient client = acc.CreateCloudBlobClient(); 

       CloudBlobContainer cont = client.GetContainerReference("<YOUR_CONTAINER_NAME>"); 

       cont.CreateIfNotExists(); 

       cont.SetPermissions(new BlobContainerPermissions 
       { 
        PublicAccess = BlobContainerPublicAccessType.Blob 

       }); 
       HttpWebRequest request = (HttpWebRequest)WebRequest.Create(file); 
       HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
       Stream inputStream = response.GetResponseStream(); 
       CloudBlockBlob cblob = cont.GetBlockBlobReference(ImageName); 
       cblob.UploadFromStream(inputStream); 
      } 
      catch (Exception ex) 
      { 

      } 

     } 
+0

спасибо за ваш ответ Supraj :) – crystyxn

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