Как ограничить типы файлов с типом файла ввода HTML?

Как я ограничиваю типы файлов с типом файла ввода HTML?

У меня есть это


Я пытаюсь ограничить тип только iCalendar типом формата.

Я также хочу проверить его на стороне сервера. Как я делаю это в ASP.NET MVC?

16
задан Peter Mortensen 21 January 2010 в 20:03
поделиться

5 ответов

К сожалению, вы не можете ограничить расширение файла так, как это можно сделать в стандартном диалоге файлового браузера. Однако, вы можете проверить расширение, как только пользователь выберет файл.

Вы можете добавить обработчик этого события.

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
20
ответ дан 30 November 2019 в 21:45
поделиться

Невозможно указать, какие файлы пользователь может выбрать. Вы можете использовать Javascript, чтобы помешать пользователю отправить форму, но этого недостаточно. Javascript можно легко отключить в браузере. Вам нужна логика на стороне сервера, которая оценивает тип контента при загрузке (даже просто проверить расширение файла на самом деле недостаточно хорошо)...

HttpPostedFile file = Request.Files(0);

if(file.ContentType != "text/calendar")
{
    //Error
}
0
ответ дан 30 November 2019 в 21:45
поделиться

при условии акцепта следует использовать атрибут contetypes, заметив, что есть одна "t". в соотношениях

и в коде сервера проверьте вот так

HttpPostedFileBase file = Request.Files[0];

if(!file.ContentType.beginWith("text/calendar")) { /Ошибка }

надеюсь, что это выдержит вашу проблему. Пометьте мой ответ, если это так.

1
ответ дан 30 November 2019 в 21:45
поделиться

text/calendar is the right mime type

<input type="file" id="fileUpload" name="fileUpload" size="23" accept="text/calendar" />
3
ответ дан 30 November 2019 в 21:45
поделиться

Лично я предпочитаю что-то вроде Загрузить , что позволяет это сделать, а также обеспечивает причудливую прогрессирующую шкалу... Не знаю, не слишком ли это "тяжело" для вас.

0
ответ дан 30 November 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: