使用ASP.NET核心2.1,将HttpRequest.Body与上传的文件一起作为MemoryStream。在文档中它说如果我使用asp.net核心webAPI然后可以将该文件作为FormFile对象。就我而言,我没有使用ASP.NET webAPI。有没有办法获取FormFile对象?所有我想知道文件的元数据,如文件名,类型等。一旦它在内存流中,我无法轻易获得这些细节。
感谢您的任何指示。
答案 0 :(得分:1)
视图模型
public class MyViewModel
{
[Display(Name = "My File")]
public IFormFile File { get; set; }
}
查看
@model MyViewModel
<form asp-action="Send" enctype="multipart/form-data">
<label asp-for="File">Filename:</label>
<input accept="image/*" title="Choose an image to upload" type="file" asp-for="File" />
<input type="submit" />
</form>
控制器
[HttpPost]
public async Task<IActionResult> Send([Bind("File")] MyViewModel myVM)
{
if (myVM.File?.Length > 0)
{
byte[] fileBytes;
using (var fileStream = myVM.File.OpenReadStream())
using (var ms = new MemoryStream())
{
fileStream.CopyTo(ms);
fileBytes = ms.ToArray();
}
var fileName = Path.GetFileName(myVM.File.FileName);
var fileMimeType = myVM.File.ContentType;
var fileContent = fileBytes;
//You have all the file attributes and content
}
}