Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2012, 17:07
Аватар для mav1
Аспирант
Отправить личное сообщение для mav1 Посмотреть профиль Найти все сообщения от mav1
 
Регистрация: 30.08.2010
Сообщений: 57

Проверка типа файла перед отправкой
Здравствуйте. После долгих мучений написал код, который проверяет перед отправкой, что за файл ему хочет отправить пользователь. Скрипт в итоге должен позволять оnправлять только файлы типа .doc и .docx, а если пользователь подсовывает ему другого типа файл, скрипт выдает алерт (мол, нужен только правильный тип файла, загрузите другой), и очищает input file.

А загвоздка такая - в IE и Opera сей скрипт работает некорректно - при первом "подсовывании" левого файла скрипт срабатывает, а при втором - уже нет. В мозилле, хроме все норм работает.

Вот код:

<script language="JavaScript">
function newkrechet() {
if(username.value.substring(username.value.lastIndexOf('.')+1,username.value.length).toLowerCase()!='doc') 
 { if (username.value.substring(username.value.lastIndexOf('.')+1,username.value.length).toLowerCase()!='docx') {alert('Необходимо выбрать .doc или .docx файл для загрузки!');
clearFileInput();};};}
</script>

<script language="JavaScript">
function clearFileInput() {
  document.getElementById("fileinputplace").innerHTML='<input name="file_name[]" required="required" type="file" id="username" size="26" onChange="javascript: newkrechet();">';
}
</script>
<form>
  <span id="fileinputplace"><input type="file" required="required" name="file_name[]" id="username" size="26" onChange="javascript:if(username.value.substring(username.value.lastIndexOf('.')+1,username.value.length).toLowerCase()!='doc') 
 { if (username.value.substring(username.value.lastIndexOf('.')+1,username.value.length).toLowerCase()!='docx') {alert('Необходимо выбрать .doc или .docx файл для загрузки!');
clearFileInput();};};"></span>
</form>


Причем если убрать теги <form> </form>, то скрипт роботает во всех браузерах. Но если их оставить (а их нельзя убрать), то корректная работа будет только в мозилле и хроме....Посоветуйте, как что поправить...
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2012, 17:14
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от mav1
А загвоздка такая - в IE и Opera сей скрипт работает некорректно - при первом "подсовывании" левого файла скрипт срабатывает
а при использовании сервера он и в остальных работать не будет
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2012, 17:21
Аватар для mav1
Аспирант
Отправить личное сообщение для mav1 Посмотреть профиль Найти все сообщения от mav1
 
Регистрация: 30.08.2010
Сообщений: 57

хм, ничего не понял) при чем здесь сервер...
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2012, 17:22
Аватар для mav1
Аспирант
Отправить личное сообщение для mav1 Посмотреть профиль Найти все сообщения от mav1
 
Регистрация: 30.08.2010
Сообщений: 57

multipart/form-data я разумеется пропишу, если что
Ответить с цитированием
  #5 (permalink)  
Старый 27.05.2012, 17:32
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

При том ,что получить строку из инпут файл нельзя-политика браузера не позволит. И то что вы что то получаете,получаете только потому что, страница тестируемая не на сервере расположена, можете получить что то, при совпадении некоторых условий изза багов браузеров.

Последний раз редактировалось dmitriymar, 27.05.2012 в 17:37.
Ответить с цитированием
  #6 (permalink)  
Старый 27.05.2012, 17:38
Аватар для mav1
Аспирант
Отправить личное сообщение для mav1 Посмотреть профиль Найти все сообщения от mav1
 
Регистрация: 30.08.2010
Сообщений: 57

на сервере...вот собственно - http://6rx.ru/testkre3.php

Так в каком направлении копать-то...?
Ответить с цитированием
  #7 (permalink)  
Старый 27.05.2012, 17:40
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

в серверной проверке расширения

Последний раз редактировалось dmitriymar, 27.05.2012 в 17:43.
Ответить с цитированием
  #8 (permalink)  
Старый 27.05.2012, 17:43
Аватар для mav1
Аспирант
Отправить личное сообщение для mav1 Посмотреть профиль Найти все сообщения от mav1
 
Регистрация: 30.08.2010
Сообщений: 57

к сожалению, это исключено...мой код можно добить всё же? Исхитриться как-нибудь с тегом <form>?
Ответить с цитированием
  #9 (permalink)  
Старый 27.05.2012, 17:44
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

mav1,
Вы фразу -политика безопасности браузеров-как себе представляете?
работа с выбором файла
Ответить с цитированием
  #10 (permalink)  
Старый 27.05.2012, 18:03
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

а вообще используйте стандартный сброс формы reset() и не городите- document.getElementById("fileinputplace").innerHTM L='<input name="file_name[]" required="required" type="file" id="username" size="26" onChange="javascript: newkrechet();">';
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
htaccess: проверка существования файла greatilya Серверные языки и технологии 0 09.02.2012 09:00
Вызов урла перед отправкой данных формы на сервер brazerok Events/DOM/Window 3 31.05.2011 12:49
Верификация формы перед отправкой Катерина Общие вопросы Javascript 4 12.03.2010 15:03
Проверка актуальности URL удаленного файла с помощью JavaScript - реально? LAPSuha Оффтопик 1 25.08.2009 09:31
Проверка размера файла Kakao Events/DOM/Window 10 27.04.2009 12:34