Определить некоторые зарезервированные символы в строке с помощью Javascript - PullRequest
0 голосов
/ 13 января 2011

У меня есть файл, введенный в форму, которая загружает файл MP3, но я хотел бы обнаружить зарезервированные символы в моей системе в имени файла, например! @ или любой другой.

Все коды, которые я нашел, заменяют эти символы, но я просто хочу обнаружить их, чтобы предупредить пользователя. Я думаю, что это будет легко с регулярными выражениями, но я не знаю о них.

Я использую JQuery / Javascript.

Изменить, чтобы улучшить описание моей проблемы:

Я работаю в приложении CodeIgniter, которое позволяет пользователю загружать файлы MP3 на сервер. Я использую jQuery для управления формами на стороне клиента. Класс загрузки CI преобразует пробелы в имени файла в подчеркивания, и все работает. Но при тестировании приложения я загрузил MP3-файл с (!) В имени, и у меня возникли проблемы с ним.

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

Ответы [ 2 ]

3 голосов
/ 14 января 2011

Подумайте не блокировать никаких символов вообще.Это просто хлопот для пользователя, и в экзотических системах со странными символами пути вы можете в конечном итоге вообще не разрешать пользователю загружать что-либо.сервер в URI-кодированной форме (в PHP urlencode() будет правильной функцией).Это делает имя файла совместимым с вашей ОС и позволяет пользователю сохранять любые специальные символы в нем при повторной загрузке файла.

1 голос
/ 13 января 2011

Один из способов сделать это - сравнить фактическое значение поля ввода с тем, которое закодировано encodeURIComponent.Если они совпадают, имя файла является безопасным.

Имейте в виду, что браузер может вообще не сообщать ни одного имени файла.Мой плагин отвечает на это, возвращая true, если значение не возвращается.Это, конечно, может означать, что никакое значение не было установлено.

Плагин jQuery:

(function($) {
    $.fn.fileNameIsValid = function() {
        var val = this[0].value.replace('C:\\fakepath\\', '');

        return !val || encodeURIComponent(val) === val;
    }
}(jQuery));

Затем вы можете назвать это так:

if ($('#yourFileInput').fileNameIsValid()) {
    // filename validates
}
...