簡體   English   中英

在 Asp.Net core 中上傳圖片失敗

[英]Failed to upload an image in Asp.Net core

我正在嘗試上傳單個圖像。 但問題是當我上傳圖片時,我發現 null (我已調試)。 這是我的代碼:

  [HttpPost]
        public async   Task <IActionResult> Create(Image products, IFormFile image)
        {
           
            if (ModelState.IsValid)
            {
                if (image != null)
                {
                    var name1 = Path.Combine(_he.WebRootPath + "/Images", Path.GetFileName(image.FileName));
                    var stream2 = new FileStream(name1, FileMode.Create);
                   await image.CopyToAsync(stream2);

                    products.ImageC = "Images/" + image.FileName;
                }


                if (image == null)
                {
                    products.ImageC = "Images/NoImageFound.jpg";
                }



                _db.Images.Add(products);
                 _db.SaveChanges();
                return RedirectToAction(nameof(Index));
            }
            return View(products);
        }


_Create.cshtml

<form asp-action="Create" method="post"  enctype="multipart/form-data">
    <div class="p-4 rounded border">
        <div asp-validation-summary="ModelOnly" class="text-danger">

        </div>

        <div class="form-group row">

            <div class="col-5">
                <p class="text-bold mb-2">Image</p>
                <input asp-for="ImageC" class="" type="file" />
            </div>
           
        </div>


        <div class="form-group">
            <input type="submit" class="btn btn-danger form-control" value="Submit" />

        </div>
    </div>
</form>


//Image.cs (Model)

 public class Image
    {
        public int Id { get; set; }
        public string ImageC { get; set; }
    }

當我鍵入提交按鈕時:-

在此處輸入圖像描述

然后我調試了我的代碼並發現了這個問題:-

在此處輸入圖像描述

我不明白為什么我找到這個 null 參考? 我將如何上傳我的圖片? 我還是一個初學者,請幫助。

我假設在 HttpGet 操作中傳遞給視圖的 model 是 Image class 的空實例,這就是 HttpPost 操作返回的 model。

所以我們可以簡單地在 class 本身中聲明一個 IFormFile 屬性,然后讓引擎用type="file"控件中的數據填充該屬性。

此時,HttpPost Create 方法中不需要 IFormFile 類型的參數。

public class Image
{
    public int Id { get; set; }
    public IFormFile ImageC { get; set; }
}

那么 HttpPost Create 方法中所需的所有其他更改都是此更改的結果。

但是,您的視圖和數據庫似乎具有相同的 model。 在這個簡單的情況下,您可以提前 go 並忘記 ViewModels 的概念,但最好是為了您未來的努力考慮模型和視圖模型之間的這種分離。 UI 應該對用於與數據庫交互的模型一無所知。
可以在此處找到有關此主題的更多信息ASP.NET MVC Model 與 ViewModel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM