Как ограничить типы файлов с помощью типа входного файла HTML?
Как ограничить типы файлов с помощью типа входного файла HTML?
У меня есть это
<input type="file" id="fileUpload" name="fileUpload" size="23" accept="Calendar/ics"/>
Я пытаюсь ограничить тип только типом формата iCalendar.
Я также хочу проверить его на стороне сервера. Как это сделать в ASP.NET MVC?
Ответы
Ответ 1
К сожалению, вы не можете ограничить расширение файла, как вы можете, в стандартном диалоговом окне браузера файлов. Тем не менее, вы можете проверить расширение, как только пользователь выберет файл.
Вы можете добавить этот обработчик событий.
filebox.Attributes.Add("onchange", "fileSelectedChanged(this);");
и эта функция JavaScript
function fileSelectedChanged(obj) {
var filePath = obj.value;
var ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();
if(ext != 'csv') {
alert('Only files with the file extension CSV are allowed');
} else {
document.getElementById('form1').submit();
}
}
Вы также должны проверить его на сервере, используя:
filebox.PostedFile.FileName
и
filebox.PostedFile.ContentType
Ответ 2
текст/календарь - правильный тип mime
<input type="file" id="fileUpload" name="fileUpload" size="23" accept="text/calendar" />
Ответ 3
Вы не можете указать, какие файлы пользователь может выбрать. Вы можете использовать Javascript для предотвращения отправки пользователем формы, но это недостаточно. Javascript можно легко отключить в браузере. Вам нужна логика на стороне сервера, которая оценивает тип содержимого загрузки (даже просто проверка расширения файла действительно недостаточно)...
HttpPostedFile file = Request.Files(0);
if(file.ContentType != "text/calendar")
{
//Error
}
Ответ 4
instaed accept вы должны использовать атрибут атрибута contetypes, чтобы существовал одиночный "t",
в contentypes
и в коде сервера проверьте, что это
Файл HttpPostedFileBase = Request.Files [0];
если (! File.ContentType.startsWith( "текст/календарь" ))
{ // Ошибка
}
надеюсь, что это пройдёт вашу проблему. Отметьте мой ответ, если он будет.
Ответ 5
Я лично предпочитаю что-то вроде Uploadify, который позволяет вам это делать, а также предоставляет фантастический индикатор прогресса... Я не знаю, t знаю, если это слишком "тяжелый вес" для вас, хотя.