Освоение проверки загрузки файлов в ASP.NET Core MVC: подробное руководство

Метод 1: базовая проверка на основе форм.
Первый метод включает проверку загрузки файла с использованием методов проверки на основе форм. Этот подход фокусируется на проверке файла на стороне сервера после отправки формы. Мы можем использовать встроенную привязку модели и функции ModelState ASP.NET Core MVC для проверки загруженного файла.

[HttpPost]
public IActionResult UploadFile(IFormFile file)
{
    if (file == null || file.Length == 0)
    {
        ModelState.AddModelError("file", "Please select a file to upload.");
        return View();
    }
// Further validation logic
    // ...
    // File is valid, process it
    // ...
}

Метод 2: проверка размера файла
В некоторых случаях вам может потребоваться ввести ограничения на размер загружаемого файла. Этого можно добиться, проверив свойство Lengthобъекта IFormFile.

[HttpPost]
public IActionResult UploadFile(IFormFile file)
{
    const int maxFileSize = 5 * 1024 * 1024; // 5MB
    if (file == null || file.Length == 0)
    {
        ModelState.AddModelError("file", "Please select a file to upload.");
        return View();
    }
    if (file.Length > maxFileSize)
    {
        ModelState.AddModelError("file", "The file size exceeds the allowed limit.");
        return View();
    }
// File is valid, process it
    // ...
}

Метод 3: Проверка типа файла
Другим общим требованием является ограничение загрузки файлов определенными типами файлов. Вы можете проверить тип файла, проверив расширение файла или тип MIME.

[HttpPost]
public IActionResult UploadFile(IFormFile file)
{
    if (file == null || file.Length == 0)
    {
        ModelState.AddModelError("file", "Please select a file to upload.");
        return View();
    }
    var allowedExtensions = new[] { ".jpg", ".jpeg", ".png" }; // Allowed file extensions
    if (!allowedExtensions.Contains(Path.GetExtension(file.FileName).ToLower()))
    {
        ModelState.AddModelError("file", "Invalid file type. Only JPG, JPEG, and PNG files are allowed.");
        return View();
    }
// File is valid, process it
    // ...
}

Метод 4: проверка на стороне клиента
Чтобы улучшить взаимодействие с пользователем, вы также можете выполнить проверку загрузки файлов на стороне клиента с помощью JavaScript. Это может помочь обнаружить ошибки до того, как форма будет отправлена ​​на сервер.

<form>
    <input type="file" id="fileInput" name="file" accept=".jpg, .jpeg, .png">
    <span id="fileError" class="text-danger"></span>
    <button type="submit">Upload</button>
</form>
<script>
    document.querySelector('form').addEventListener('submit', (event) => {
        const fileInput = document.querySelector('#fileInput');
        const fileError = document.querySelector('#fileError');
        if (fileInput.files.length === 0) {
            fileError.textContent = 'Please select a file to upload.';
            event.preventDefault();
        } else if (!['image/jpeg', 'image/png'].includes(fileInput.files[0].type)) {
            fileError.textContent = 'Invalid file type. Only JPG, JPEG, and PNG files are allowed.';
            event.preventDefault();
        }
    });
</script>

Проверка загрузки файлов в ASP.NET Core MVC необходима для обеспечения целостности и безопасности вашего приложения. В этой статье мы рассмотрели несколько методов проверки загрузки файлов, включая проверку на основе формы, проверку размера файла, проверку типа файла и проверку на стороне клиента. Объединив эти методы, вы можете создать надежный механизм проверки загрузки файлов в своих приложениях ASP.NET Core MVC.