(К вашему сведению, я бы удостоверился, что код, который у вас есть, был проверен на работоспособность, прежде чем вы что-либо измените.)
Если вы пытаетесь ограничить типы файлов, которые могут быть загружены, вы должны иметь возможность чтобы проверить как тип файла (Content Type), так и расширение.
ContentType должен иметь что-то вроде «image / png» или «image / jpeg». Вы можете найти списки типов изображений в Интернете, я нашел этот ответ, в котором было много общих: { ссылка }
Чтобы проверить расширение, я считаю, вы могли бы проанализировать имя файла, например это с использованием Path.GetExtension :
var extension = Path.GetExtension(file.FileName);
(Путь из пространства имен System.IO. Используйте System.IO.Path...
или добавьте using System.IO;
в начало файла C# )
Затем вы можете проверить расширение, например, для «.png» или «.jpeg».
Проверки на стороне клиента
О, и ваш вопрос упоминался ранее загрузить ". Технически на этом этапе файл уже загружен. Если вы пытаетесь вообще ограничить то, что загружается, вы можете добавить некоторые проверки на стороне клиента в форму загрузки. Обратите внимание, что он не является пуленепробиваемым, и вам все равно нужно проверить серверную часть, как я упоминал выше.
Другой совет
Лично я бы порекомендовал немного реорганизовать ваш код. Вот как бы это выглядело:
public IActionResult UploadFile ([FromForm] IFormFile file, [FromForm] string fileName)
{
var fileId = _fileService.UploadFile(fileName, file);
return Ok (new {
id = fileId,
fileName = file.FileName,
fileSize = file.Length,
fileType = file.ContentType,
// Removing this from the Response.
// Probably don't need to send the file back.
// file = file
});
}
Я думаю, это даст вам лучшие сообщения об ошибках, если что-то пойдет не так с UploadFile()
. Также (для меня) немного яснее последовательность / порядок вещей.