Почему поле загрузки не может выбрать новый файл после того, как jQuery-validate вернет ошибку? - PullRequest
0 голосов
/ 21 сентября 2010

Я кодирую форму, используя PHP и jQuery. У меня есть поле загрузки файла, к которому я применил следующие правила jQuery-validate:

image: {
 accept: "jpeg|jpg|png|gif",
 required: "#edit_ID:blank"
}

Поле загрузки файла должно принимать только изображения в формате jpeg / jpg, png или gif. Требуется только в том случае, если поле с идентификатором «edit_ID» оставлено пустым.

Это поле для загрузки моего файла:

<input type="file" id="image" name="image" class="input1" />

Поле загрузки файла выбирает файлы без каких-либо проблем, но когда jQuery возвращает ошибку из-за нарушенного правила, даже если я выбираю новый файл на моем компьютере, файл, выбранный до появления ошибки, остается там. Это как если бы оно стало отключенным после того, как jQuery-validate выдаст ошибку.

Я попытался удалить правила, установленные для этого поля, протестировал его и не столкнулся с проблемой.

Кто-нибудь знает, что является причиной этой проблемы?

Спасибо.

P.S .: Я столкнулся с проблемой в Firefox (v.3.6.9) и IE (v.8), но не в Google Chrome (v.5).

1 Ответ

0 голосов
/ 21 сентября 2010

Технически это не ответит на ваш первоначальный вопрос.

Но не стоит полагаться на программирование на стороне клиента для проверки изображений;Ваша программа может быть одурачена.Так как вы все равно используете PHP, почему бы не использовать PHP для какой-либо проверки на стороне сервера?

Все загруженные файлы хранятся в массиве $ _FILES.Вы можете проверить тип файла следующим образом:

<?php
    foreach($_FILES as $file)
    {
        if(!empty($file['type'])) //only check if there's a valid file type
        {
            if($file['type'] != 'image/jpeg' && $file['type'] != 'image/png' && $file['type'] != 'image/gif')
            {
                //this file is not any one of the accepted formats, so long!
            }
            else{//do your processing}
        }
        else{//error invalid file}
    }
?>

Если вам нужны мгновенные проверки, вы все равно можете использовать AJAX вместо того, чтобы полагаться только на клиентскую сторону для выполнения проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...