C#(Asp.net MVC 2)在View中从byte []显示图像

时间:2013-08-01 14:45:33

标签: c# asp.net asp.net-mvc image binary

我需要在asp.net mvc应用程序的日期库中保存图片。我在表MimeType(nvarchar [50])和ImageData中创建了一个字段,用于将图片保存在byte []中。我用ado.net。我将图像保存在这样的表中:

 private DBAppl db = new DBAppl();
            public void CreateNewCar(newcar Car, HttpPostedFileBase image) 
            {
                    if (image != null)
                        {

                            Car.mimetype = image.ContentType;
                            Car.ImageData = new byte[image.ContentLength];
                            image.InputStream.Read(Car.ImageData, 0, image.ContentLength);                    

                        }
                db.AddTonewcars(Car);
                db.SaveChanges();
            } 

图片正常保存在表格中。然后我华尔特在视图中显示我的图像。我在控制器中创建方法

public FileContentResult GetImage(int newcarid)
        {
            DBAppl db = new DBAppl();
            newcar car = (from p in db.newcars
                              where p.newcarid == newcarid
                               select p).First();
            return File(car.ImageData, car.mimetype.Trim());
        }

在视图中我插入了这段代码:

<% if (Model.ImageData == null)
{ %>
None
<% }
else
{ %>
<img src="<%= Url.Action("GetImage", "Cars", new { Model.newcarid }) %>" alt="<%: Model.description %>" /> <% } %> 

但是图片没有加载,只有alt。帮忙,我做错了什么?我尝试在html-page的sourse代码中使用链接,但是读取该图片有错误。我查看了mozilla&#34;有关页面的信息&#34;并看到该页面有我的图片(778 kb),但它是0px x 0px。

2 个答案:

答案 0 :(得分:1)

尝试在返回文件

之前设置标头
HttpContext.Response.AddHeader("Content-Length"("Content-Type", "image/jpeg"));

或者您正在访问标题。

将image / jpeg用于jpg文件

谷歌搜索其他扩展名和文件。

答案 1 :(得分:0)

我用这种方式解决了问题:

public FileContentResult GetImage(int newcarid)
        {
            DBAppl db = new DBAppl();
            newcar car = (from p in db.newcars
                              where p.newcarid == newcarid
                               select p).First();
            return File(car.ImageData**.ToArray()**, car.mimetype.Trim());
        }

课堂上:

 public void CreateNewCar(newcar Car, HttpPostedFileBase image) 
            {
            **var car = new newcar();**
            if (image != null)
                {

                    car.name = Car.name;
                    car.date = DateTime.Now;
                    car.color = Car.color;
                    car.picmimetype = image.ContentType;

                    int length = image.ContentLength;
                    byte[] buffer = new byte[length];
                    image.InputStream.Read(buffer, 0, length);
                    car.ImageData = buffer;

                }
            db.AddTonewcars(car);
        db.SaveChanges();