Как получить объект IFormFile / FormFile в ядре asp.et - PullRequest
0 голосов
/ 07 июня 2018

Используя ASP.NET core 2.1, создайте HttpRequest.Body с загруженным файлом как MemoryStream.В документации написано, что если я использую основной webAPI asp.net, то могу получить этот файл как объект FormFile.В моем случае я не использую ASP.NET webAPI.Есть ли способ получить объект FormFile?Все, что я хочу знать, метаданные файла, такие как имя файла, тип и т. Д. Оказавшись в потоке памяти, я не смог получить эти данные легко.

Спасибо за любые указатели.

1 Ответ

0 голосов
/ 07 июня 2018

ViewModel

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
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...