6

我有个问题。我将一些图像作为 base64 存储在 DB 中,现在我需要编辑包含此图像的对象。图像由用户以表格形式上传,我将其转换为base64数据库并将其存储在数据库中。现在我的问题是如何将base64字符串转换为 IFormFile 以显示它以编辑整个对象。

谢谢

4

1 回答 1

-1

如果您尝试获取包含 Byte[]/base64 的对象/viewModel,我会在几个小时内搜索解决方案,但随后我在 viewmodel 中添加了额外的参数

    public class ProductAddVM
{
    public int Id { get; set; }
    public Categories Category { get; set; }
    public decimal Vat { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public IFormFile Image { get; set; }
    public Byte[] ByteImage { get; set; }
    public string Description { get; set; }
    public bool? Available { get; set; }
}

正如您提到的,参数 Image 用于存储可能在 EDIT 中上传的新图像。而参数 ByteImage 是从数据库中获取旧图像。

在您完成编辑的地方,您可以将 IFormFile 转换为 byte[] 并将其保存在数据库中

        internal ProductAddVM GetProduct(int id)
    {
        var model = new Product();
        model = Product.FirstOrDefault(p => p.Id == id);
        var viewModel = new ProductAddVM();
        viewModel.Id = model.Id;
        viewModel.Name = model.Name;
        viewModel.Available = model.Available;
        viewModel.Description = model.Description;
        viewModel.Price = model.Price;
        viewModel.Category = (Categories)model.Category;
        viewModel.Vat = model.Vat;
        viewModel.ByteImage = model.Image;
        return viewModel;
    }


    internal void EditProduct(int id, ProductAddVM viewModel,int userId)
    {
        var tempProduct = Product.FirstOrDefault(p => p.Id == id);
        tempProduct.Name = viewModel.Name;
        tempProduct.Available = viewModel.Available;
        tempProduct.Description = viewModel.Description;
        tempProduct.Price = viewModel.Price;
        tempProduct.Category =(int)viewModel.Category;
        tempProduct.Vat = CalculateVat(viewModel.Price,(int)viewModel.Category);
        if (viewModel.Image != null)
        {
            using (var memoryStream = new MemoryStream())
            {
                viewModel.Image.CopyToAsync(memoryStream);
                tempProduct.Image = memoryStream.ToArray();
            }
        }
        tempProduct.UserId = userId;
        tempProduct.User = User.FirstOrDefault(u => u.Id == userId);

        SaveChanges();
    }
于 2017-05-20T20:47:32.977 回答