【问题标题】:Uploading image in MVC .NET core using EF [closed]使用 EF 在 MVC .NET 核心中上传图像 [关闭]
【发布时间】:2018-08-01 01:49:04
【问题描述】:

如何使用 EF 创建数据库,并将信息和图片作为 db 中的列?我还需要将图像上传到本地数据库。我开始使用 Microsoft 的教程构建应用程序,您可以在其中上传“电影”。 https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/start-mvc?tabs=aspnetcore2x 我怎样才能显示来自 db 的一些照片,甚至像这样的示例 (SeedData.cs) 中的硬编码?

【问题讨论】:

    标签: entity-framework model-view-controller asp.net-core local-database


    【解决方案1】:

    你的图像模型类:

            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();
                    }
    

    【讨论】:

    • 我已经编辑了问题,我知道它是如何工作的,但我猜是缺少了一些东西
    • 这个问题解决了吗?应该注意什么?
    【解决方案2】:

    您的问题非常广泛,但我会尝试回答要点。 要创建一个表来存储图像,您需要一个实体,例如:

    public class ImageEntity
        {
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            public int Id { get; set; }
            public string ImageInfo { get; set; }
            public byte[] Image { get; set; }
        }
    

    要上传您的图像,您需要先将其转换为字节[],然后它与将任何对象以正确的格式添加到表中相同。要将其转换为 byte[],您可以使用类似

    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;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 2021-05-15
      • 2020-04-15
      • 2021-12-24
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多