2017-03-11 17 views
5

私はASP.NET Core(MVC 6)EF Visual Studioを使用している小さなブログに取り組んでいます。画像をデータベースに保存する方法がわかりません。私はIFormfileについて読んだことがありますが、どうやってそれをどうやってやるのか分かりません。私はこれに新しいですし、少し助けをしたいです。ASP.NET Coreを使用して画像をデータベースに保存する方法は?

作成している投稿に画像を保存したい(同じフォームで)。私はpostIDにそれを保存したいと思います。それから、イメージを表示できるようにする必要があります。どうすればいいですか?私は頼むべきことがたくさんあることを知っていますが、どこを向けるべきかわかりません。良いヒントやアイデアがあれば、気軽にリンクを送ってください。

ありがとうございます!

+0

ファイルをデータベースに保存することはお勧めできません。データベースが急速に大量になり、問題のバックアップと復元が行われる可能性があります。 –

答えて

0

IFormFileを使用して、表示された画像を保存することができます。以下はサンプルコードです。ビューで

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

単に似IFormFileプロパティとそれをバインドします

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

あなたがもしこれが役立つ可能性がありますようにあなただけのサーバー上のファイルを保存する必要があなたのコントローラで

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

データベースに保存する必要があります。これはhttps://www.mikesdotnetting.com/article/259/asp-net-mvc-5-with-ef-6-working-with-filesの修正だったとk7Boysからの入力の多くはMVC 6 HttpPostedFileBase?

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

ブログモーダルクラスは、IMGのフィールドのような持っている必要があり、ここで答えます。

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

コントローラ;

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

ここに来るには2時間ほどかかりました。ビュー内の画像を表示する作業が複雑になることはありません。お待ちください

関連する問題