HttpPostedFileBase всегда получает ноль на MVC страницах бритвы - PullRequest
1 голос
/ 21 января 2020

Я создал одну форму, где пользователь может загрузить фотографию профиля, и она сохраняется в базе данных в виде байтового массива. но в методе post я получаю значение HttpPostedFileBase свойство равно нулю.

<form id="profile-form" method="post" enctype="multipart/form-data">
    <div class="col-md-6">
       <div class="row">
            <div class="form-group col-md-6">
                 <img id="output" style="height:200px; width:200px;" />
            </div>
       </div>
       <div class="row">
            <div class="form-group col-md-12">
                <input asp-for="Input.ProfilePhoto" type="file" onchange="loadFile(event)" class="form-control">
            </div>
       </div>
       <button type="submit" class="btn btn-default" value="Upload">Save</button>
   </div>
</form>

public class Input
{
      [Display(Name = "Profile Photo")]
      public HttpPostedFileBase ProfilePhoto { get; set; }
}

public async Task<IActionResult> OnPostAsync()
{

}

1 Ответ

1 голос
/ 22 января 2020

ASP. NET Ядро, эквивалентное HttpPosteFileBase, равно IFormFile:

[BindProperty]
public IFormFile Upload { get; set; }

public async Task OnPostAsync()
{
    var file = Path.Combine(_environment.ContentRootPath, "uploads", Upload.FileName);
    using (var fileStream = new FileStream(file, FileMode.Create))
    {
        await Upload.CopyToAsync(fileStream);
    }
}

Вам также необходимо украсить свойство IFormFile (или класс, в котором оно находится) с атрибутом [BindProperty].

Ссылка: Загрузка файлов на страницах бритвы

...