단일 이미지 업로드를 시도하고 있습니다. 하지만 문제는 이미지를 업로드 할 때 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 작업에서 뷰에 전달 된 모델이 Image 클래스의 빈 인스턴스이고 HttpPost 작업에서 반환 된 모델이라고 가정합니다.
따라서 클래스 자체에서 IFormFile 속성을 선언하고 엔진이 type = "file" 컨트롤 의 데이터로 속성을 채우도록 할 수 있습니다.
이 시점에서 HttpPost Create 메서드에 IFormFile 형식의 매개 변수가있을 필요가 없습니다.
public class Image
{
public int Id { get; set; }
public IFormFile ImageC { get; set; }
}
그러면 HttpPost Create 메서드에 필요한 다른 모든 변경 사항이이 변경의 결과입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다