Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1

Проверка формы отправки файла на имя и формат файла

11.05.2013, 15:59. Показов 5932. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Появилась необходимость проверять имя файла и формат перед отправки формы.
Пока в сети нашел возможность проверять формат:
HTML5
1
2
<input name="file" type="file" id="userfile" onChange="javascript:if(userfile.value.substring(userfile.value.lastIndexOf('.')+1,userfile.value.length).toLowerCase()!='txt') 
{alert('Необходимо выбрать файл file.txt'); return;};">
Но нужно, что бы проверялось имя файл и формат и если выбран неверный то происходит оповещение, что файл не тот, который надо и форма очищалась.
Т.е. сделать невозможность загрузить файл с другим именем.расширением.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2013, 15:59
Ответы с готовыми решениями:

Проверка существования файла для отправки на почту
Вообщем траблы с этим Использую класс public static void MessageSend() { try { MailMessage...

Проверка на имя файла
При запуске проги, нужно проверить ее имя. Если имя - test1.exe, то все ок. Если имя не является test1.exe, то переименовать ее в test1.exe...

Выделять из имени каждого файла имя компьютера и имя учётной записи и записывать их в два файла соответственно
здравствуйте, подскажите... Есть например, 10 файлов (.txt) в названии которых написано имя компьютера и имя учетной записи Так же в...

7
 Аватар для xnimor
72 / 72 / 6
Регистрация: 16.06.2012
Сообщений: 220
12.05.2013, 15:43
Аппостол, input file организован таким способом, чтобы предотвратить доступ к пользовательским файлом из скрипта (соображения безопасности) поэтому воздействовать на этот input не имеется никакой возможности.
Однако, можно исхитриться, и пересоздавать данный input

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>
function chng()
{
if(userfile.value.substring(userfile.value.lastIndexOf('.')+1,userfile.value.length).toLowerCase()!='txt') 
{
    alert('Необходимо выбрать файл file.txt'); 
    document.getElementById('userfile').outerHTML =  '<input name="file" type="file" id="userfile" onChange="chng()">';
    };
}
</script>
</head>
<body>
   <input name="file" type="file" id="userfile" onChange="chng()">
 
 
 
 
 
 
</body>
</html>
Вот такой кусок кода
1
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
12.05.2013, 16:22  [ТС]
Цитата Сообщение от xnimor Посмотреть сообщение
Аппостол, input file организован таким способом, чтобы предотвратить доступ к пользовательским файлом из скрипта (соображения безопасности) поэтому воздействовать на этот input не имеется никакой возможности.
Однако, можно исхитриться, и пересоздавать данный input

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
function chng()
{
if(userfile.value.substring(userfile.value.lastIndexOf('.')+1,userfile.value.length).toLowerCase()!='txt') 
{
    alert('Необходимо выбрать файл file.txt'); 
    document.getElementById('userfile').outerHTML =  '<input name="file" type="file" id="userfile" onChange="chng()">';
    };
}
</script>
</head>
<body>
   <input name="file" type="file" id="userfile" onChange="chng()">
</body>
</html>
Вот такой кусок кода
Спасибо большое, можно сказать то, что хотелось =)
И как я понял - нельзя задать проверку на имя файла? только на расширение?
0
 Аватар для xnimor
72 / 72 / 6
Регистрация: 16.06.2012
Сообщений: 220
12.05.2013, 17:38
Извиняюсь, перечитал по новой спецификации. все же управлять непосредственно значением можно (нельзя через JS получить доступ к данным)
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
function chng()
{
if(userfile.value.substring(userfile.value.lastIndexOf('.')+1,userfile.value.length).toLowerCase()!='txt') 
{
    alert('Необходимо выбрать файл file.txt'); 
    userfile.value = "";
    
    };
}
</script>
</head>
<body>
   <input name="file" type="file" id="userfile" onChange="chng()">
 
 
 
 
 
 
</body>
</html>
здесь мы "обнуляем" value нашего input.

Проверять на имя - так же через userfile.value - это и есть ведь имя файла
1
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
12.05.2013, 19:13  [ТС]
Спасибо большое, в итоге у меня получилось вот такой код:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type="text/javascript">
function chng()
{
var fullPath = document.getElementById('userfile').value;
if (fullPath) {
    var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
    var filename = fullPath.substring(startIndex);
    if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
        filename = filename.substring(1);
    }
    if(filename!='file.txt') 
    {
    alert('Необходимо выбрать файл file.txt'); 
    userfile.value = '';
    }
}
}
</script>
<input type="file" id="userfile" onChange="chng()">
Я в JS не сильно силен, можно ли как нибудь упростить?
0
 Аватар для xnimor
72 / 72 / 6
Регистрация: 16.06.2012
Сообщений: 220
12.05.2013, 19:22
Если необходимо получить информацию о файле (точнее имя файла) не проще было ли написать
JavaScript
1
2
3
4
5
6
7
8
function chng()
{
var fullPath = document.getElementById('userfile').value;
if (fullPath && fullPath.indexOf("file.txt") != fullPath.length - 9)
{
alert('Необходимо выбрать файл file.txt'); 
    userfile.value = '';
}
(могу с 9 ошибиться, проверить это надо, но думаю, идея ясна)
1
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
12.05.2013, 21:19  [ТС]
Цитата Сообщение от xnimor Посмотреть сообщение
Если необходимо получить информацию о файле (точнее имя файла) не проще было ли написать
JavaScript
1
2
3
4
5
6
7
8
function chng()
{
var fullPath = document.getElementById('userfile').value;
if (fullPath && fullPath.indexOf("file.txt") != fullPath.length - 9)
{
alert('Необходимо выбрать файл file.txt'); 
    userfile.value = '';
}
(могу с 9 ошибиться, проверить это надо, но думаю, идея ясна)
Размеры пути разные бывают, для одних путей работает, для других нет, проще думаю сделать на проверку пути на наличие имени файла:
JavaScript
1
2
3
4
5
6
7
8
9
function chng()
{
var fullPath = document.getElementById('userfile').value;
if (fullPath && !~fullPath.indexOf('file.txt'))
{
    alert('Необходимо выбрать файл file.txt'); 
    userfile.value = '';
}
}
Работает прекрасно =)
Спасибо за помощь =)
0
 Аватар для koza4ok
632 / 440 / 67
Регистрация: 19.09.2012
Сообщений: 1,632
14.05.2013, 21:09
Думаю полезно будет http://www.html5rocks.com/ru/t... /dndfiles/
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2013, 21:09
Помогаю со студенческими работами здесь

Дана строка содержащая полное имя файла.Выделить из этой строки только имя файла без расширения
1.Дан символ С.Вывести его код (то есть номер в кодовой таблице) 2. Дан символ С.Вывести два символа, первый из которых предшествует...

Дана строка, содержащая полное имя файла. Выделить из этой строки имя и расширение файла
дана строка, содержащая полное имя файла, т.е. имя диска, список каналов(путь), собственно имя и расширение.выделить 1) из этой строки имя...

Проверка конца файла(формат .cvs (таблица MS Excel)
Есть файл, формата .cvs, который содержит несколько строк, как правильно должен выглядеть цикл проверки не достижения конца файла, чтобы не...

Имя файла в заголовке формы
Доброго всем здравия бояры! Загружаю имя файла из OpenDialog1 в заголовок формы, делаю это так: if (OpenDialog1-&gt;Execute()) ...

Из строки, содержащей полное имя файла, получить имя файла
Помогите Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь), собственно имя и расширение. Выделить из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Настройка записи справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru