C# 如何在模型中添加图像上载属性
我正在制作一个简单的电影数据库,并尝试插入一个图像属性,如下图所示: 如何使用我拥有的属性创建类似的内容:C# 如何在模型中添加图像上载属性,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在制作一个简单的电影数据库,并尝试插入一个图像属性,如下图所示: 如何使用我拥有的属性创建类似的内容: public class Movie { public int ID { get; set; } public string Title { get; set; } public DateTime ReleaseDate { get; set; } public string Genre { get; set; }
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; }
}
}
公共类电影
{
公共int ID{get;set;}
公共字符串标题{get;set;}
公共日期时间释放日期{get;set;}
公共字符串类型{get;set;}
公共十进制价格{get;set;}
公共类MovieDBContext:DbContext
{
公共DbSet电影{get;set;}
}
}
所以,当我想要创建新电影时,我可以选择上传一张图片
更新您的模型以存储图像
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; }
}
}
公共类电影
{
公共int ID{get;set;}
公共字符串标题{get;set;}
公共日期时间释放日期{get;set;}
公共字符串类型{get;set;}
公共十进制价格{get;set;}
//用于存储图像的新属性
公共字节[]映像{get;set;}
//请随意将其移出您的实体
[未映射]
公共HttpPostedFileBase内容{get;set;}
公共类MovieDBContext:DbContext
{
公共DbSet电影{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();
}
公共异步任务添加(电影模型)
{
if(ModelState.IsValid)
{
使用(var reader=new System.IO.BinaryReader(model.Content.InputStream))
{
movie.Image=reader.ReadBytes(model.Content.ContentLength);
}
//插入数据库上下文
db.Movies.Add(电影);
等待db.saveChangesSync();
返回操作(“索引”);
}
返回视图();
}
请随意添加验证以检查文件内容类型和长度。非常简单
首先,在模型中添加字符串属性。这样,您将只保存图像路径(假设您将图像上载到文件夹中)
然后将上载控件添加到页面中以上载图像
我不久前在这里写过:(最后有一个下载的例子)
如果由于某些技术限制而无法将图像保存到文件夹中,您可以按照heymega前面指出的那样将其保存到数据库中。位图或Byte[]数据类型。只需在您的电影类上创建另一个属性。您希望将图像存储在数据库中还是直接从Web服务器引用它们?是的,我希望将它们与其他属性一起添加到db中,以便我可以像此图片一样浏览图像;看看这个mvc/ajax教程,或者这是一个更完整的教程嗨,谢谢你的帮助,但是我遇到了一些错误类型或名称空间名称'ReadBytes'在名称空间'System.Diagnostics.Eventing.Reader'Error 2'System.IO.BinaryReader.BinaryReader(System.IO.Stream)中不存在“有一些是无效的arguments@john抱歉,我用错了二进制读取器和readbyte参数。问题是,我对asp.net mvc几乎2个月都不熟悉,所以现在这对我来说有点太难了;(,这么多东西只是为了插入一个图像,那么有没有一些更适合初学者的教程可以帮助我?