2015-11-06 125 views
0

我可以上傳圖片。但是我沒有保存數據庫的路徑。我怎樣才能做到這一點?如何將圖像路徑保存到數據庫? MVC。

我刪除了一些視圖中代碼較短的函數。我希望一切都被理解。

這裏我得到了什麼:

MODEL:

 public class Ogloszenie 
    { 
     [Key, ForeignKey("Pojazd")] 
     public int PojazdOgloszenieId { get; set; } 
     public RodzajPaliwa RodzajPaliwa { get; set; } 
     public int RokProdukcji { get; set; } 
     public int MocSilnika { get; set; } 
     public int Przebieg { get; set; } 
     public DateTime DataPrzegladu { get; set; } 
     public DateTime DataUbezpieczenia { get; set; } 
     public string OpisPojazdu { get; set; } 

//path 
     public string Zdjecie { get; set; } 
//path 

     public virtual Pojazd Pojazd { get; set; } 
    } 

控制器:

 [HttpPost] 
      [ValidateAntiForgeryToken] 
      public ActionResult Create([Bind(Include = "PojazdOgloszenieId,RodzajPaliwa,RokProdukcji,MocSilnika,Przebieg,DataPrzegladu,DataUbezpieczenia,OpisPojazdu,Zdjecie")] Ogloszenie ogloszenie, HttpPostedFileBase file) 
      { 
       if (ModelState.IsValid) 
       { 
        if (file != null) 
        { 
         var fileName = Path.GetFileName(file.FileName); 
         var path = Path.Combine(Server.MapPath("~/Zdjecia/"), fileName); 
         file.SaveAs(path); 

//*********************?????????? Something like this?  
Zdjecie = Url.Content("~/Zdjecia/" + file); 
        } 

        db.Ogloszenia.Add(ogloszenie); 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 

       ViewBag.PojazdOgloszenieId = new SelectList(db.Pojazdy, "ID", "Marka", ogloszenie.PojazdOgloszenieId); 
       return View(ogloszenie); 
      } 

VIEW:

@model AutoMonit.Models.Ogloszenie 

    <h2>Utwórz ogłoszenie</h2> 

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

     <div class="form-horizontal"> 
      <hr /> 
      @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
      <div class="form-group"> 
       @Html.LabelFor(model => model.PojazdOgloszenieId, "PojazdOgloszenieId", htmlAttributes: new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @Html.DropDownListFor(model => model.PojazdOgloszenieId, null, htmlAttributes: new { @class = "form-control" }) 
        @Html.ValidationMessageFor(model => model.PojazdOgloszenieId, "", new { @class = "text-danger" }) 
       </div> 
      </div> 

*************** 
. 
. 
. 
*************** 

    //FILE UPLOADING 
       <label for="file">Filename:</label> 
       <input type="file" name="file" id="file" /> 



      <div class="form-group"> 
       <div class="col-md-offset-2 col-md-10"> 
        <input type="submit" value="Utwórz" class="btn btn-default" /> 
       </div> 
      </div> 
     </div> 
    } 

    <div> 
     @Html.ActionLink("Wróć", "Index") 
    </div> 
+0

Cześć,Piter。你可以寫Zdjecie =「〜/ Zdjecia /」+ fileName。雖然這將使您的數據庫信息綁定到您的服務器配置上,以圖像根文件夾的相對路徑。我將只保存文件名並稍後與C#中的相對路徑(動態檢索)結合起來。 – codeRecap

+0

你能說更多嗎?我是初學者:( – DiPix

+0

好的,只保存文件的名稱,不是完整的路徑,後來當你需要檢索它時,可以將它與「〜/ Zdjecia /」結合起來,結果你會得到「 〜/ Zdjecia/myFileName.txt「,您可以在客戶端將其用作圖像URL。 – codeRecap

回答

0

好吧,我做它(感謝codeRecap靈感; ))

[HttpPost] 
      [ValidateAntiForgeryToken] 
      public ActionResult Create([Bind(Include = "PojazdOgloszenieId,RodzajPaliwa,RokProdukcji,MocSilnika,Przebieg,DataPrzegladu,DataUbezpieczenia,OpisPojazdu")] Ogloszenie ogloszenie, HttpPostedFileBase file) 
      { 
       if (ModelState.IsValid) 
       { 
        if (file != null) 
        { 
         var fileName = Path.GetFileName(file.FileName); 
         var path = Path.Combine(Server.MapPath("~/Zdjecia/"), fileName); 
         file.SaveAs(path); 

ogloszenie.Zdjecie = Url.Content("~/Zdjecia/" + fileName); 

        } 

        db.Ogloszenia.Add(ogloszenie); 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 

       ViewBag.PojazdOgloszenieId = new SelectList(db.Pojazdy, "ID", "Marka", ogloszenie.PojazdOgloszenieId); 
       return View(ogloszenie); 
      } 
相關問題