2017-04-11 119 views
4

我遇到了問題。我將一些圖像作爲base64存儲在數據庫中,現在我需要編輯包含此圖像的此對象。該圖像由用戶以表格的形式上傳,並將其轉換爲base64並存儲在數據庫中。現在我的問題很熱,要將base64圖像轉換回IFormFile來顯示它以編輯整個對象。ASP.NET Core MVC base64映像到IFormFile

日Thnx

回答

-1

如果你想獲得一個對象/視圖模型包含一個byte []/BASE64, 我搜索以小時爲一個解決方案,但後來我加入額外的參數到我的視圖模型

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將存儲可能正在上傳的新圖像,如您所述。 雖然參數ByteImage是從數據庫中獲取舊圖像。

的,你完成編輯,你可以轉換IFormFile爲byte [],並將其保存在數據庫 我試圖使用映射器,但它出了問題,這個代碼工作100%,但我要讓看起來更好

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

它的工作對我來說,在一個大的項目與上傳圖片3000+用戶 –