如何使用ef和图片作为db中的列创建数据库?另外,我需要将图像上传到本地数据库中。我开始使用Microsoft的教程构建应用程序,您可以上传"电影"。https://lealen.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/start-mvc?tabs = aspnetcore2x我该如何从db中显示一些照片,甚至像这样的例子(seeddata.cs(?
您的图像模型类:
public class YourImageModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public byte[] Image { get; set; }
}
在控制器中:
public async Task<IActionResult> UploadImage(YourImageModel yourImageModel, IFormFile imageToBeUploaded)
{
if (!ModelState.IsValid)
{
return View(yourImageModel);
}
if (imageToBeUploaded != null)
{
using (var memoryStream = new MemoryStream())
{
await imageToBeUploaded.CopyToAsync(memoryStream);
var imageToBeUploadedByteArray = memoryStream.ToArray();
yourImageModel.Image= imageToBeUploadedByteArray ;
}
}
_dbContext.YourImageModel.Add(yourImageModel)
await _dbContext.SaveChangesAsync();
return View();
}
您的问题非常广泛,但我将尝试回答要点。为了创建一个存储图像的表格,您需要一个实体,例如:
public class ImageEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string ImageInfo { get; set; }
public byte[] Image { get; set; }
}
要上传您的图像,您需要先将其转换为字节[],然后将其以正确格式添加到表中的任何对象相同。要转换为字节[],您可以使用
之类的东西public byte[] BitmapToByteArray(Bitmap image)
{
//converts bitmap to byteArray
byte[] byteArray;
using (MemoryStream memoryStream = new MemoryStream())
{
image.Compress(Bitmap.CompressFormat.Png, 0, memoryStream);
byteArray = memoryStream.ToArray();
}
return byteArray;
}