2017-04-11 4 views
4

문제가 있습니다. base64로 DB에 이미지를 저장 했으므로이 이미지가 포함 된이 객체를 편집해야합니다. 이미지는 사용자가 폼에 업로드하고 base64로 변환하여 DB에 저장합니다. 이제 내 문제는 전체 개체를 편집하기 위해 그것을 표시하기 위해 Base64 이미지를 IFormFile로 변환하는 것이 좋습니다.ASP.NET Core MVC base64 이미지를 IFormFile

thnx

답변

-1

당신은 바이트 []/64 기수를 포함하는 객체/뷰 모델을 얻으려고 노력하는 경우, 은 내가 솔루션을 시간에서 검색하지만 난 내 뷰 모델에 추가 매개 변수를 추가

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

매개 변수 이미지는 언급 한대로 EDIT에 업로드 할 수있는 새 이미지를 저장하는 것입니다. ByteImage 매개 변수는 데이터베이스에서 이전 이미지를 가져 오는 것입니다. 당신은 내가 매퍼를 사용하려고 [] 바이트 및 데이터베이스 에 저장하는 IFormFile을 변환 할 수 있습니다 편집을 완료

는하지만이 코드는 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 사용자와 큰 프로젝트에, 나를 위해 작동 봐 –

관련 문제