ASP.NET Core上傳文件
ASP.NET Core使用IFormFile來讀取上傳的文件內容,然后將數據寫入到磁盤或其它存儲空間。
- 添加FileUpload模型,用來接收上傳的文件內容。
public class FileUpload
{
public string Name { get; set; }
[Required]
public IFormFile SelectedFile { get; set; }
}
- 在Form中添加
enctype=multipart/form-data屬性,完整的Form代碼如下:
<form method="post" action="~/Upload" enctype="multipart/form-data">
<p>
<label>名稱: </label>
<input type="text" asp-for="FileUpload.Name" />
</p>
<p>
<label>選擇文件: </label>
<input type="file" asp-for="FileUpload.SelectedFile" />
</p>
<input type="submit" value="提交" />
</form>
- 添加OnPostAsync方法,處理submit的文件
[BindProperty]
public FileUpload FileUpload { get; set; }
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
this.Error = "輸入錯誤";
return Redirect("~/Upload");
}
//保存文件
string path = Path.Combine(Environment.CurrentDirectory, "Upload", Guid.NewGuid().ToString("n"));
using (var fileStream = new FileStream(path, FileMode.Create))
{
await FileUpload.SelectedFile.CopyToAsync(fileStream);
}
return Page();
}
通過以上步驟即可完成簡單的文件上傳。
注意:這種方式只能處理小文件的上傳,當上傳大文件時,需要參考一下步驟:ASP.NET Core 中的文件上傳
