Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверить наличие файла
 
 автор: Николай2357   (21.07.2008 в 07:24)   письмо автору
 
 

Здравствуйте.
Подскажите, как проверить что файл выбран?
<script>
function Sub(){
if(??????????){alert("Файл не выбран");
}else{
document.form1.submit();
}
</script>
<form name=form1>
<input typ=file name=file1>
<input typ=button  onClick='Sub()'>
</form>

Спасибо.

   
 
 автор: RMW   (21.07.2008 в 11:23)   письмо автору
 
   для: Николай2357   (21.07.2008 в 07:24)
 

<input type="button" onclick="if(this.form.file1.value)this.form.submit()">

Не проверял, но должно.

   
 
 автор: PAT   (21.07.2008 в 12:25)   письмо автору
 
   для: Николай2357   (21.07.2008 в 07:24)
 

В браузере - никак.
Прочитать значение VALUE oбъекта <input type="file"> НЕЛЬЗЯ (по соображениям безопасности).
Так что - только на сервере после сабмита формы.

   
 
 автор: sim5   (21.07.2008 в 12:58)   письмо автору
 
   для: PAT   (21.07.2008 в 12:25)
 

Почему это нельзя? Записать значание - да, а вот прочитать:
<input type="file" name="as" onchange="alert(this.value)">

   
 
 автор: Николай2357   (21.07.2008 в 18:51)   письмо автору
 
   для: sim5   (21.07.2008 в 12:58)
 

Спасибо всем. Обобщив все вышесказанное, родил такого монстрика:
<script>
var subm=0;
function Sub(pr){
if(pr==1){
subm=1;
}
if(pr==2&&subm==0){
alert("Файл не выбран");
}else{
if(pr==2&&subm==1){
document.form1.submit();
}
}
}
</script>

<input type="button" value="Отправить" onclick="Sub(2)">
<input type="file" name="as" onchange="Sub(1)">


Корявенько, конечно, но работает.

PS.
>
<input type="button" onclick="if(this.form.file1.value)this.form.submit()">

Не проверял, но должно.

Жаль, что не работает, может у меня руки кривые...

   
 
 автор: sim5   (21.07.2008 в 19:29)   письмо автору
 
   для: Николай2357   (21.07.2008 в 18:51)
 

Действительно коряво. Если у вас в форме всего одно поле, то достаточно так:

<form action="" method="post" enctype="multipart/form-data" 
onsubmit="if(!this.as.value) return false">
<input type="file" name="as">
<input type="submit" value="Send">
</form>

   
 
 автор: Николай2357   (21.07.2008 в 19:45)   письмо автору
 
   для: sim5   (21.07.2008 в 19:29)
 

Да вот в том и дело, что не одно. И кнопка отправки не одна. Поэтому и <button>, а не <input type="submit"> И onsubmit тоже не получилось, там до отправки еще обработка есть, которая нежелательна, если файл не выбран. Оттого и весь этот геморрой...

   
 
 автор: sim5   (21.07.2008 в 20:18)   письмо автору
 
   для: Николай2357   (21.07.2008 в 19:45)
 

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

   
 
 автор: Николай2357   (21.07.2008 в 21:02)   письмо автору
 
   для: sim5   (21.07.2008 в 20:18)
 

>Да нет, никто не мешает. Но у меня в основном не проверка, а предварительная обработка. Вообще это редактор. Скрипт достаточно большой и на onsubmit повешана подготовка результата скрипта к отправке. А в зависимости от того, выбран ли файл (это одна из операций), подготовка проходит поразному. Если проверку делать на сервере, все результаты скрипта насмарку. Так что это не оборона, а попытка помочь юзеру не делать глупости.

   
 
 автор: Николай2357   (21.07.2008 в 21:12)   письмо автору
 
   для: Николай2357   (21.07.2008 в 21:02)
 

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования