![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 23.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Staram się w swoim projekcie zastosować przesyłanie plików na serwer bez przeładowywania strony. Chciałem do tego wykorzystać bibliotekę advAJAX. Kod na którym eksperymentuje, wygląda następująco: formularz.html:
plik.php:
Wywołanie window.onload = przeslij; sprawia, że obsługę formularza przejmuje advAJAX. Gdy wywołanie to jest aktywne, to jako odpowiedź otrzymuję: "array(0) { }", czyli php nie stwierdziło żadnych plików do przesłania. Gdy wywołanie window.onload = przeslij; usuwam, formularz obsługiwany jest standardowo i po otwarciu nowej strony mam: array(1) { ["username"]=> array(5) { ["name"]=> string(15) "Clipboard01.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(74) "C:\Documents and Settings\Edric\Ustawienia lokalne\Temp\php218.tmp" ["error"]=> int(0) ["size"]=> int(250548) } czyli formularz działa prawidłowo. Wygląda na to, że advAJAX nie potrafi obsługiwać przesyłania plików.. albo ja robie coś źle. I tu pytanie - co zrobić żeby to zadziałało? Dodam jeszcze, że jeśli zmienię typ input na 'text', i sprawdzę zmienną $_POST po przesłaniu za pomocą advAJAX to wszystko działa dobrze. Może zna ktoś jakiś inny obiekt AJAX, który pomógłby mi to zrealizować? Próbowałem problem rozwiązać w inny sposób, ale na drodze stanęła mi Opera i jej obsługa inputów dla plików (pytanie na ten temat również znajduje się na forum. Bardzo proszę o pomoc, bo naprawdę nie wiem jak ten problem rozwiązać. Niestety nie wiem, jak to wygląda z advAJAX, ale znalazłem coś co prawdopodobnie rozwiązuje ten problem: http://en.dklab.ru/lib/JsHttpRequest/" title="Zobacz w manualu PHP" target="_manual Ten post edytował Edric 10.06.2008, 14:58:53 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Nie zrobisz tego w ten sposób po prostu - względy bezpieczeństwa. Jedyna opcja to perl itp.
P.S. Słyszałem że ustawiając specjalnie FF można to wykonać ale to jak robisz tylko dla siebie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 23.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie zrobisz tego w ten sposób po prostu - względy bezpieczeństwa. Jedyna opcja to perl itp. P.S. Słyszałem że ustawiając specjalnie FF można to wykonać ale to jak robisz tylko dla siebie. Ale czemu względy bezpieczeństwa? Przecież przesyłanie plików na serwer to normalna sprawa - po to jest input type=file, po to jest m.in. POST, po to jest zmienna $_FILES w PHP. Jedyne co ja chcę zmienić, to wysyłać te pliki bez przeładowania strony. Zresztą - działa mi to. Poniżej wrzucam kod dla pliku html oraz php. W html są tylko najważniejsze rzeczy - skrypt i formularz. <body> itp sobie darowałem;). user.html:
serw.php
Oczywiście wymagane są pliki JsHttpRequest.js oraz JsHttpRequest.php - wszystko na stronie http://en.dklab.ru/lib/JsHttpRequest/ Mi całość działa w Operze, FF i IE7. W FF nie włączałem żadnych specjalnych opcji - lecę na standardowych ustawieniach. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 17:23 |