如何在模型中添加图片上传属性

时间:2015-04-20 18:47:25

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

我正在创建一个简单的电影数据库,我正在尝试插入图片属性,如下图所示:

View movies

如何使用我拥有的属性创建与此类似的东西:

public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }

        public class MovieDBContext : DbContext
        {
            public DbSet<Movie> Movies { get; set; }
        }
    }

因此,当我想创建新电影时,我可以选择上传图片。

Create movie

2 个答案:

答案 0 :(得分:0)

更新您的模型以存储图片

public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }

        //New Property to Store Image
        public byte[] Image { get;set;}

        //Feel free to move this out of your entities
        [NotMapped]
        public HttpPostedFileBase Content { get;set;}

        public class MovieDBContext : DbContext
        {
            public DbSet<Movie> Movies { get; set; }
        }
    }

添加动作以保存电影

public async Task<ActionResult> Add(Movie model)
{
    if(ModelState.IsValid)
    {
        using (var reader = new System.IO.BinaryReader(model.Content.InputStream))
        {
            movie.Image = reader.ReadBytes(model.Content.ContentLength);
        }
           //Plug in your db context
           db.Movies.Add(movie);
           await db.SaveChangesAsync();

           return redirectToAction("Index");
    }

    Return View();
}

随意添加验证以检查文件contentType&amp;长度。

答案 1 :(得分:0)

很简单。

首先,在模型中添加字符串属性。这样,您将只保存图像路径(假设您将图像上传到文件夹中)。

然后在页面中添加上传控件以上传图片。

我刚刚在这里写过这篇文章:http://davidsonsousa.net/en/post/how-to-upload-a-file-using-mvc-3-and-ajax(最后有一个下载示例)

如果由于某些技术限制而无法将图像保存在文件夹中,可以像heymega先前指出的那样将它们保存在数据库中。