Загрузка asp. net core 3.1 Razor - PullRequest
       35

Загрузка asp. net core 3.1 Razor

0 голосов
/ 07 апреля 2020

Я пытаюсь загрузить файлы в ASP. NET core 3.1, но в своем посте я не получаю файл.

Это count = 0 что я всегда получаю.

@ cs html

 <input asp-for="app.FormFile" id="input-2" name="input2[]" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">

@cshtml.cs

public async Task<IActionResult> OnPostAsync(List<IFormFile> files)
{
    long size = files.Sum(f => f.Length);

    foreach (var formFile in files)
    {
        if (formFile.Length > 0)
        {
            var filePath = Path.GetTempFileName();

            using (var stream = System.IO.File.Create(filePath))
            {
                await formFile.CopyToAsync(stream);
            }
        }
    }

    // Process uploaded files
    // Don't rely on or trust the FileName property without validation.

    return Ok(new { count = files.Count, size });
}

In ASP. NET core 2.0 это работало нормально! Что не так?

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Имя параметра - files, но вы явно устанавливаете имя ввода на input2[], поэтому они не совпадают. ASP. NET Core не будет пытаться интерпретировать, что вы загрузили некоторые файлы, поэтому вы, вероятно, захотите, чтобы они равнялись go в этом параметре. Если он не может найти что-то для привязки данных (по имени), он просто отбросит их и перейдет.

Имя должно files, чтобы оно соответствовало имени параметра: name="files".

0 голосов
/ 08 апреля 2020

, даже если я передаю имя, оно все еще идет с счетом = 0 <input asp-for="Laudos.FormFile" id="files" name="files" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">

Вы можете попробовать указать тип кодировки (enctype) multipart/form-data для вашего <form> тег, как показано ниже.

<form method="post" enctype="multipart/form-data">
    <input asp-for="Laudos.FormFile" id="input-2" name="files" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">
    <input type="submit">
</form>

Результат теста

enter image description here

...