|
|
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
Есть форма, преглашающая пользователя выбрать файл для аплоада. При клики на сабмит вызывается не php-скрипт, а Java-функция (расположенная в другом файле). Сделано это так, потому что я пишу раздел сайта, используя ajax. То есть фактически получается такая цепочка: 1. При клике на сабмит вызывается Java-функция (метод при этом в форме стоит POST). 2. Вызванная ф-я реализует последовательно весь ajax-механизм, вызывая в конечном итоге (после успешного статуса) php-скрипт/ 3. вызванный php-скрипт проверят POST и не находит там полей формы, а кроме того $_FILES тоже пуст (естественно). Собственно вопрос: как мне через ajax-механизм реализовать аплоад файла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2008, 10:08 |
|
||
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
burton1. При клике на сабмит вызывается Java-функция (метод при этом в форме стоит POST). У меня подозрение, что все же не Java-функция, а javascript-функция ... У меня полгода назад была подобная проблема, при этом мои формы (весь контент) подгружались через AJAX и еще я хотел использовать элемент <input type="file"> со своей кнопкой, которая по стилю бы подходила странице. Я это сделал, вот вырезки кода: Форма: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. На серваке у меня стоит Java (jsp-servlet), поэтому я использую библиотеку org.apache.commons.fileupload от Apache - суперкомпактная штучка, намного удобнее, чем ручная обработка файлового потока, баундрис и прочего. Единственное, что надо доделать - сама отправка файла (функция document.getElementById('submit_form').click()) должна вызываться после получения положительного ответа с сервера на валидность всех полей, а у меня файл отправляется в любом случае ... просто руки не дошли. burton, поищи (или сделай) скрипт получения файла на сервере. Не забудь, что это делается не автоматически, а к request'у цепляется файловый поток, который надо выцепить и записать на диск. Инфы для PHP намного больше, так что проблемы быть не должно. Вот примерчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2008, 13:18 |
|
||
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
Спасибо, IDVsbruck!!! Почитал поразбирался. Но я реализовал передачу файлика без перезагрузке странички при помощи iframe. Типа: Код: plaintext 1. 2. Вообщем-то меня такой вариант устроил вполне. Сам движок AJAX в остально у меня отлажен, так что я решил: AJAX + upload через iframe = заипца. А тебе (IDVsbruck) ещё раз спасибо за участие!!!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 09:40 |
|
||
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
Забыл сказать, что сам iframe невидимый - в этом-то и фига ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 09:42 |
|
||
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
burtonЗабыл сказать, что сам iframe невидимый - в этом-то и фига Не забудь, что ифраме нельзя делать display:none, а нужно ширину и высоту в 0 поставить, а то не во всех браузерах зафурычит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 21:11 |
|
||
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
да бл*, сколько же можно самим писать велосипед? http://www.google.ru/search?q=prototype.js не надо сочинять ифреймы , не нужно придумывать хитрые протоколы взаимодействия, совершенно необязательно каждый раз писать document.getElemenyById('test') , есть запись $('test') в этой библиотеке.. ну конечно, ради прикола надо попробовать самому всё сделать через ифрэйм или через добавление нового скрипта в хэд, но это только первый раз! потом нужно пользоваться готовыми решениями! ещё рекомендую ExtJs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2008, 22:26 |
|
||
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
Ну, во-первых, даже prtotype отсылает "ajax-овским способом" посредством iframe. Во-вторых, не все любят использовать фреймворки - где объем, где нежелание разбираться. В-третьих - смысл использовать внешний фреймфорк ради сокращения кода на десяток-другой символов? А даже если так, то можно просто самому написать функцию $(id). И никто велосипед не изобретает. Конструкция уже стара ... А разобраться в работе не грех даже достаточно "продвинутым" программерам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2008, 22:51 |
|
||
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
ZeusTheTrueGodда бл*, сколько же можно самим писать велосипед? http://www.google.ru/search?q=prototype.js не надо сочинять ифреймы , не нужно придумывать хитрые протоколы взаимодействия, совершенно необязательно каждый раз писать document.getElemenyById('test') , есть запись $('test') в этой библиотеке.. ну конечно, ради прикола надо попробовать самому всё сделать через ифрэйм или через добавление нового скрипта в хэд, но это только первый раз! потом нужно пользоваться готовыми решениями! ещё рекомендую ExtJs Я не так давно изучал код Prototype и upload там нет. В jQuery есть не реализован не самым лучшим способом, т.к. формируется фрейм для target, но посылается из основного документа, а следовательно юсер интерфейс подвисает. Здесь предложили варианты как генерить фреймы и from и target. Это решение лучше. Тем-то JavaScript и отличается от Си-Диего, что Вы можете поспорить с лучшими мировыми лидерами, а не использовать Гбайтный готовый функционал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2008, 04:10 |
|
||
|
AJAX и upload через PHP
|
|||
|---|---|---|---|
|
#18+
Ксати по архитектуре Prototype. Да и jQuery. Эти библиотеки засоряют глобальное пространство тривиальными именами, из которых Вы обно уже упомянули - "конфетку". А еще есть Prototype, Class ... Это приводит к тому что использовать совместно такие библиотеки как Prototype,jQuery, jsolait просто невозможно. В то же время такие библиотеки как doji, YUI - привязыват имена в доменном стиле и используют всего одну глобальную переменную - dojo и YAHOO - соответственно. Так кто из них хороший? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2008, 04:16 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=340&tid=1456696]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 354ms |

| 0 / 0 |
