2017-03-11 61 views
5

Tôi đang làm việc trên một blog nhỏ bằng cách sử dụng ASP.NET Core (MVC 6) EF Visual Studio. Tôi gặp khó khăn khi tìm cách lưu hình ảnh vào cơ sở dữ liệu. Tôi đã đọc về IFormfile nhưng tôi không thực sự hiểu làm thế nào để đi về nó, tôi bị mắc kẹt. Tôi mới đến điều này và rất muốn có một chút giúp đỡ.Làm thế nào để lưu hình ảnh vào cơ sở dữ liệu bằng ASP.NET Core?

Tôi muốn lưu hình ảnh vào bài đăng tôi đang tạo (Trong cùng một biểu mẫu). Do đó, tôi muốn lưu nó vào postID. Sau đó, tôi cần để có thể hiển thị hình ảnh, làm thế nào để tôi làm điều đó? Tôi biết có rất nhiều điều để hỏi, nhưng tôi không biết chuyển sang đâu. Vui lòng gửi liên kết nếu bạn có bất kỳ mẹo hoặc ý tưởng hay nào.

Cảm ơn trước!

+0

Bạn không nên lưu tệp vào cơ sở dữ liệu, cơ sở dữ liệu của bạn có thể rất nhanh, điều này giúp sao lưu và khôi phục vấn đề. –

Trả lời

0

Bạn có thể sử dụng IFormFile để lưu hình ảnh được đăng từ chế độ xem. Dưới đây là mã mẫu.

public class UserProfileViewModel 
    { 
     public string UserName { get; set; } 
     public IFormFile UploadedImage { get; set; } 
     public string ImageUrl { get; set; } 
    } 

Theo quan điểm đơn giản là gắn nó với tài sản IFormFile như:

<img src="@Model.ImageUrl" alt="User Logo" asp-append-version="true" /> 
<input type="file" asp-for="UploadedImage" /> 

Trong điều khiển của bạn, bạn chỉ cần lưu tập tin trên máy chủ như:

var filename = ContentDispositionHeaderValue 
            .Parse(user.UploadedImage.ContentDisposition) 
            .FileName 
            .Trim('"'); 
        filename = Path.Combine(webRoot, "/Content/UserProfile/", [email protected]"\{filename}"); 
        if (Directory.Exists(webRoot + "/Content/UserProfile/")) 
        { 
         using (FileStream fs = System.IO.File.Create(filename)) 
         { 
          user.UploadedImage.CopyTo(fs); 
          fs.Flush(); 
         } 
        } 
model.ImageURL = "~/Content/Brands/" + user.UploadedImage.FileName; 
2

Bạn có thể tìm thấy điều này hữu ích nếu u cần phải lưu vào cơ sở dữ liệu. Đây là một biến thể của https://www.mikesdotnetting.com/article/259/asp-net-mvc-5-with-ef-6-working-with-files và rất nhiều đầu vào từ k7Boys trả lời ở đây MVC 6 HttpPostedFileBase?

<input type="file" name="Image" id="Imageinput"> 

Blog phương thức lớp nên có lĩnh vực Img tương tự;

public int BlogId{ get; set; } 
    ... 
    public byte[] Img{ get; set; } 

Bộ điều khiển;

public async Task<IActionResult> Create([Bind("BlogId,...Img")] Blog blog t, IFormFile Image) 
    if (ModelState.IsValid) 
     { 
      if (Image!= null) 

      { 
       if (Image.Length > 0) 

       //Convert Image to byte and save to database 

       { 

        byte[] p1 = null; 
        using (var fs1 = Image.OpenReadStream()) 
        using (var ms1 = new MemoryStream()) 
        { 
         fs1.CopyTo(ms1); 
         p1 = ms1.ToArray(); 
        } 
        Blog.Img= p1; 

       } 
      } 

      _context.Add(client); 
      await _context.SaveChangesAsync(); 

      return RedirectToAction("Index"); 
     } 

Cho tôi một vài giờ để đến đây. Bây giờ làm việc trên xem các hình ảnh trong một cái nhìn, chắc chắn điều này sẽ không phức tạp. Hãy tận hưởng

Các vấn đề liên quan