Не работает скрипт в Опере
Доброго времени суток!
Пользователь загружает путь файла в текстовое поле с помощью скрипта. Подскажите мне, плиз, почему этот скрипт в IE работает нормально, а в Опере не хочет работать <SCRIPT language="javascript"> function DialogFileOpen(OId) { var df=document.createElement("INPUT"); df.id="df"; df.setAttribute("type", "file"); df.style.visibility="hidden"; document.Form1.appendChild(df); df.click(); if(df.value) { document.getElementById(OId).value=df.value; } document.Form1.removeChild(df); } </SCRIPT> ............... ............... <INPUT id="ThemeFile" name="ThemeFile" type="text" > <INPUT type="button" value="Ссылка" onclick="DialogFileOpen('ThemeFile')" > ............... |
Потому что принудительно открыть окно загрузки файла можно только в ИЕ и Сафари.
|
А как же мне быть? Можно ли открыть это окно загрузки файлов как-то по-другому?
|
Дайте пользователю элемент file, пусть сам на него нажимает.
|
Дело в том, что у меня есть несколько полей. При нажатии на кнопку отправки формы у меня выполняется скрипт по проверке правильности ввода данных на сервере на PHP. Если какие-то данные введены неверно, то эта страница загружается повторно, но уже с введенными правильными значениями (я беру их из сессии). Если я поставлю элемент file, то не смогу задать атрибут value, чтобы записать в поле ранее выбранный пользователем путь
|
А если вы не поставите элемент file, то вы не сможете закачать файл на сервер.
|
Почему нет. Мне просто нужно передать методом POST абсолютный путь к файлу.
А можно ли как-нибудь задать значение value в поле file (например, при загрузке страницы)? |
Цитата:
Цитата:
|
В PHP есть функция copy(path1,path2), где path1 - это новый путь к файлу на сервере, а path2- это абсолютный путь к этому файлу на диске пользователя.
Подскажите как задать value. Попробую... |
Цитата:
|
stosen,
Вам надо прочитать про особенности загрузки только имени файла и самого содержимого файла на сервер средствами PHP |
path1 и path2 нужно поменять местами. Может я ошибаюсь, но эта функция copy('C:\doc1.txt','/docs/doc1.txt') на локальном хосте работает нормально. Может на удаленном она выдаст ошибку:confused:
|
А с чего бы ей на локалхосте не работать? Компьютер-то один.
|
Цитата:
|
Цитата:
|
Спасибо за помощь. Я так понял, что наилучшим вариантом будет поставить поле file, и делать проверку файла на стороне пользователя средствами javascript.
|
Что значит "проверку файла"?
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Но все-таки, скажите мне, плиз, как задать значение value в поле file при загрузке страницы. Зачем мне это нужно? Как я уже говорил проверка полей на наличие ошибок у меня делается на стороне сервера. Если есть ошибки, то я делаю редирект на эту же страницу и вывожу их. При повторной отправке формы мне уже не нужно передавать выбранный ранее файл на сервер. Ведь он уже загружен во временную папку. Не так ли? И дабы не смутить пользователя, что нужно файл выбирать еще раз, я хочу, чтобы в поле file был прописан путь к выбранному файлу (его я возьму из сессии).
|
Цитата:
Цитата:
|
Я думал уже об этом. А если пользователь захочет выбрать другой файл? Если передается другой файл - то предыдущий удаляю, новый записываю.
|
Ну тогда оставляйте поле file с соответствующей припиской.
Лучше в вашем случае вообще проверку данных без перезагрузки страницы делать. |
Цитата:
Цитата:
|
Цитата:
|
stosen
>> Значит, я так понимаю, value поля file поставить нельзя Жжошь однозначно! >> А как это сделать? Например, перед печатью страницы делать проверку, что если файл загружен, то поле file получает атрибут disabled='disabled', а ниже печатается ссылка на файл и кнопка удалить файл, на которую вешается ajax-запрос на сервер, по приходу ответа ссылка удаляется, а атрибут убирается. |
Цитата:
|
Цитата:
Но пока ограничусь рекомендациями Kolyaj и сделаю приписку к полю. А в скором будущем буду совершенствовать свой скрипт и обязательно применю эту технологию. Спасибо за ответы!!! |
Без file в той или иной форме вы не получите файл от пользователя. А если получите, то имя этому методу - хак, и он гразит уголовной наказуемотью.
|
Цитата:
|
А как без file полч=учить файл от клиента? Кроме закладочки клиенту на комп - не знаю. Тольк, если конечно клиент сам согласится поставить такую прогу, но я чёт в этом сомневаюсь...
Если по поводу того, что где-то про это уже сказали - то наверно, я плохо прочёл тему.... |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 21:26. |