2014-02-20 96 views
1

我的要求是從數據庫中獲取圖像並顯示在前端。在我的情況下,我使用的是asp.net MVC。數據庫IR oracle,將圖像的數據類型是團塊.The follwing是我的代碼如何在asp.net mvc中正確顯示來自數據庫的圖像列表?

模型

這是該類的模型與它有兩個屬性ImageDisplayImageStream

public class SelectionModel 
{ 
    public byte[] ImageDsiplay { get; set; } 
    public MemoryStream ImageStream { get; set;} 
} 

控制器代碼

在控制器我試圖從他的數據庫中獲取圖像和分配給模型。

public ActionResult Index() 
{ 
    SelectionModel sel = new SelectionModel(); 

    List<SelectionModel> lissel = new List<SelectionModel>(); 
    byte[] imagedata; 

    string sql = "select filecontent from filestore"; 

    OracleConnection con = new OracleConnection(ConStr); 
    OracleCommand com = new OracleCommand(sql, con); 

    try 
    { 
     con.Open(); 

     OracleDataReader dr; 

     dr = com.ExecuteReader(); 

     while (dr.Read()) 
     { 
      imagedata = (byte[])dr[0]; 

      sel.ImageDsiplay = imagedata; 

      var stream = new MemoryStream(sel.ImageDsiplay); 

      sel.ImageStream = stream; 

      lissel.Add(sel); 
     } 
    } 
    catch (Exception ex) 
    { 
     // ?? 
    } 

    //Here i am trying to return the list . 

    return View(lissel); 
} 

查看代碼

下面是視圖代碼,它應該顯示圖像。

@model IEnumerable<GoldForGold.Models.SelectionModel> 

<table> 
    <tr> 
     <td>   
      @foreach (var item in Model) 
      { 
       <img src="@Url.Action("Index", "Selection")" alt="myimage" /> 
      } 
     </td> 
    </tr> 
</table> 

發行

的問題是我不能夠從數據庫中顯示圖像。圖像不顯示。我已經嘗試了相當長的一段時間,但無法找出問題

+0

您不斷重複您的介紹。你不斷重複你的介紹。你不斷重複你的介紹。 – itsme86

+0

Lol..itsme86。它不會讓我發佈這個問題。我想給我添加更多的內容。非常抱歉...你有解決上述問題的辦法嗎? – user2465036

回答

0

從歷史上看,我已經使用了IHttpHandler這類東西。事情是這樣的:

public class EmployeePhotoHandler : IHttpHandler 
{ 
    public bool IsReusable { get { return false; } } 

    public void ProcessRequest(HttpContext context) 
    { 
     int employeeID; 
     if (!int.TryParse(context.Request.QueryString["ID"], out employeeID)) 
      return; 

     EmployeePhoto photo = EmployeeService.GetPhotoByEmployee(EmployeeService.GetEmployeeByID(employeeID)); 
     if (photo == null || photo.Photo == null) 
      return; 

     context.Response.ContentType = "image/jpeg"; 
     context.Response.BinaryWrite(photo.Photo); 
    } 
} 
+0

你好itsme86 ..我正在努力與你的解決方案..可以請你解釋一下我的問題,因爲我剛剛開始與MVC – user2465036

+0

我的意思是說模型中的屬性應該看起來像什麼,線是什麼代碼在視圖中呈現圖像。 – user2465036

0

我用我的控制器WebImage類的動態呈現,並在DB調整圖像:

[ImageOutputCache(Duration = 18000)] 
public void Image(int id) 
{ 
    Image image = ImageDAL.SelectSingle(e => e.ImageId == id); //EF Model 

    WebImage webimage = new WebImage(image.Data); //image.Data (byte[]) 

    //resize, crop etc 

    webimage.Write(); 
} 

下面是輸出緩存的屬性代碼(否則緩存輸出內容類型爲text/html):

public class ImageOutputCache : OutputCacheAttribute 
    { 
     public override void OnResultExecuting(ResultExecutingContext filterContext) 
     { 
      base.OnResultExecuting(filterContext); 

      filterContext.HttpContext.Response.ContentType = "image/jpeg"; 
     } 
    } 
相關問題