2017-10-08 1 views
1

J'ai créé une application ASP.NET MVC et téléchargé sur azure, ses images sont en train d'enregistrer dans un dossier et elles fonctionnent bien sur mon local serveur. mais quand je télécharge mon site à Azur, il ne montre pas les images que je télécharge en ligne, mais il montre des images que j'ai téléchargées sur le serveur local. les images enregistrer le code est le suivantJ'ai téléchargé une application asp.net MVC sur azure ne pas récupérer des images du dossier au serveur

public JsonResult MainCategoryImageUpload(CreateMainCategoryViewModel model) 
    { 
     var file = model.ImageFile; 
     string imgUrlWithoutTildSymbol = ""; 
     if (file != null) 
     { 
      // save mainCategory Without Image 
      MainCategory m = new MainCategory(); 
      m.DateCreated = DateTime.Now; 
      m.DateModified = DateTime.Now; 
      m.MainCategoryName = model.MainCategoryName; 


      ApplicationDbContext db = new ApplicationDbContext(); 
      db.MainCategories.Add(m); 
      db.SaveChanges(); 

      // Now lets save image for the above category 
      //var fileName = Path.GetFileName(file.FileName); 
      var extension = Path.GetExtension(file.FileName); 
      //var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file.FileName); 
      //var path = Path.Combine(Server.MapPath("~/Content/Images/UploadedImage/"), fileName); 
      //file.SaveAs(path); 

      string id_and_extension = m.MainCategoryId + extension; 
      string imgUrl = "~/Content/Images/MainCategories/" + id_and_extension; 

      m.ImageUrl = imgUrl; 
      db.Entry(m).State = EntityState.Modified; 
      db.SaveChanges(); 
      file.SaveAs(Server.MapPath("~/Content/Images/MainCategories/" + id_and_extension)); 
      imgUrlWithoutTildSymbol = "/Content/Images/MainCategories/" + id_and_extension; 

     } 
     return Json(imgUrlWithoutTildSymbol,JsonRequestBehavior.AllowGet); 
    } 

Répondre

1

Tout d'abord, vous pouvez utiliser Kudu console pour vérifier si le répertoire est /Content/Images/MainCategories/ existant. Et vous pouvez remote debug your web app et vérifier si le code fonctionne comme prévu.

Deuxièmement, j'utilise le code suivant pour télécharger et afficher l'image, ce qui fonctionne bien à la fois sur local et Azure, vous pouvez vous y référer.

Contrôleur

[HttpGet] 
public ActionResult UploadFile() 
{ 

    return View(); 
} 

[HttpPost] 
public ActionResult UploadFile(HttpPostedFileBase file) 
{ 
    try 
    { 
     if (file.ContentLength > 0) 
     { 
      string fileName = Path.GetFileName(file.FileName); 

      var path = Server.MapPath("~/Content/Images/MainCategories/"); 

      if (!Directory.Exists(path)) 
      { 
       Directory.CreateDirectory(path); 
      } 

      file.SaveAs(path + fileName);    

      ViewBag.Message = "File Uploaded Successfully!!"; 

      ViewBag.imgurl = "/Content/Images/MainCategories/" + fileName; 
     } 

     return View(); 
    } 
    catch 
    { 
     ViewBag.Message = "File upload failed!!"; 
     return View(); 
    } 
} 

Voir

@{ 
    ViewBag.Title = "UploadFile"; 
} 

<h2>UploadFile</h2> 

@using(Html.BeginForm("UploadFile","Upload", FormMethod.Post, new { enctype="multipart/form-data"})) 
{ 

    <div> 
     @Html.TextBox("file", "", new { type= "file"}) <br /> 

     <input id="Submit1" type="submit" value="submit" /> 
     @ViewBag.Message 

     <img src="@ViewBag.imgurl" alt="" /> 
    </div> 

} 

Par ailleurs, Azure web app in an App Service plan has storage limit, si possible, vous pouvez stocker le contenu statique dans Azure Blob storage.

+0

merci beaucoup, cela a fonctionné pour moi –

+0

maintenant ça fonctionne bien mais une fois que je republie mon site Web les photos précédentes que j'ai téléchargées en ligne commencent à disparaître. signifie dire chaque fois que je republie le site Web le répertoire précédent est supprimé/substitué et il devient vide. –