2013-04-28 38 views
0

我已經搜索了一段時間,沒有快樂。我試圖將圖像保存爲我的SQL數據庫作爲字節數組,然後我試圖稍後顯示它。顯示部分不工作。我不知道這是保存還是顯示問題。保存似乎工作正常,我可以看到我的SQL表中的「二進制數據」。有什麼建議麼?在MVC中保存/顯示圖片時遇到了一些問題4

發生了什麼事情是我的頁面上出現了破碎的圖像圖標。即使我手動轉到網址,例如... /治療/ LoadImage/14它壞了。

模型包含這在我的表定義:

public byte[] Photo { get; set; } 

創建視圖:

<div class="editor-label"> 
    @Html.LabelFor(model => model.Photo) 
</div> 
<div class="editor-field"> 
    <input type="file" name="photo" /> 
</div> 

創建控制器:

[HttpPost] 
    public ActionResult Create([Bind(Exclude = "Photo")]Treatment treatment) 
    { 
     if (ModelState.IsValid) 
     { 
      treatment.Photo = GetByteArrayFromFile(); 
      treatment.WebOrder = db.Treatments.Count(); 
      db.Treatments.Add(treatment); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.TreatmentTypeId = new SelectList(db.TreatmentTypes, "Id", "Name", treatment.TreatmentTypeId); 
     return View(treatment); 
    } 

    private byte[] GetByteArrayFromFile() { 
     int fileLength = Request.Files["photo"].ContentLength; 
     byte[] byteArray = new byte[fileLength]; 

     return byteArray; 
    } 

顯示視圖:

<div class="display-label"> 
      @Html.DisplayNameFor(model => model.Photo) 
    </div> 
    <div class="display-field"> 
     <img src="@Url.Action("LoadImage", new { Id = Model.Id })" /> 
    </div> 

的LoadImage控制器:

public ActionResult LoadImage(int Id) { 
     byte[] bytes = db.Treatments.Find(Id).Photo; 
     return File(bytes, "image/jpeg"); 
    } 

我已經加入:

@using (Html.BeginForm("Create", "Treatments", FormMethod.Post, new { enctype = "multipart/form-data" })) { 
    // View Code Omitted 
} 

我創建視圖。

我的代碼有什麼基本錯誤嗎?有什麼建議麼?謝謝。

回答

0

這是我的GetByteArrayFromFile方法的問題。我上面的原始方法只返回了一個零數組。使用這個,我解決了我的問題:

 private byte[] GetByteArrayFromFile() { 
      WebImage image = WebImage.GetImageFromRequest(); 
      byte[] byteArray = image.GetBytes(); 

      return byteArray; 
     } 
相關問題