HttpPostedFileBase 在 MVC Razor 页面中总是为空
HttpPostedFileBase always get null in MVC Razor pages
我创建了一种用户可以上传个人资料照片的表单,并将其作为字节数组存储在数据库中。
但是在 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()
{
}
相当于HttpPosteFileBase
的ASP.NET核心是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);
}
}
您还需要用 [BindProperty]
属性修饰 IFormFile
属性(或它所在的 class)。
我创建了一种用户可以上传个人资料照片的表单,并将其作为字节数组存储在数据库中。 但是在 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()
{
}
相当于HttpPosteFileBase
的ASP.NET核心是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);
}
}
您还需要用 [BindProperty]
属性修饰 IFormFile
属性(或它所在的 class)。