Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy jest możliwość ładowania pliku przez strone internetowa za pomoca AJAXa
Sokrates
post 21.08.2008, 20:37:24
Post #1





Grupa: Zarejestrowani
Postów: 96
Pomógł: 0
Dołączył: 11.09.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam, mam taki problem związany z AJAXem,
a mianowicie mam formularz
  1. <form id="CP::AddNew" enctype="multipart/form-data" method="post" action="myadmin.php?act=0&id=5">
  2. Dodaj Baner:<br />
  3. <input type="file" size="107" name="upload" class="form" value="" />
  4. <input type="button" value="Zapisz" name="save" class="button" onclick="sendForm('CP::AddNew');" />
  5. </form>


który obsługuje taki skrypt javascript w powiązaniu z ADVAJAX
  1. function sendForm( id )
  2. {
  3. advAJAX.submit(document.getElementById(id), {
  4. onSuccess : function(obj) { document.getElementById( 'CP::ContentPanel' ).innerHTML = '' + convertHTML(obj.responseText) + ''; },
  5. onLoading : function(obj) { document.getElementById( 'CP::ContentPanel' ).innerHTML = '<div class="wait"><!-- --></div>'; },
  6. onError : function(obj) { document.getElementById( 'CP::ContentPanel' ).innerHTML = '<div class="error"><!-- --></div>'; }
  7. });
  8. }


Problem w tym że w powyższym przypadku jak wysyłam formularz do skryptu PHP
nie otrzymuje informacji z INPUTa typu FILE a dokładnie zmiennej $_FILES (w PHP)

Po zmianie ostatniego INPUTa w formularzu na
  1. <input type="submit" value="Zapisz" name="save" class="button" />

następuje przeładowanie strony i wtedy wszystko jest OK. Dostaję informacje na temat
załadowanego pliku z powyższego inputa.

Więc stąd moje stwierdzenie że to wina AJAXa.

Czy ktoś wie jak to można obejść, czy jest w ogóle możliwość załadowania pliku metoda AJAX
(bez przeładowywania strony).
Może trzeba jakoś inaczej napisać funkcję JavaScript.

Wielkie dzięki za pomoc,
Pozdrawiam


--------------------
Pozdrawiam,
Sokrates
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
wookieb
post 21.08.2008, 23:03:04
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie ma takiej możliwości. Firefox blokuje wysyłanie plikóe przez JS. na IE bodajże pojdzie.


--------------------
Go to the top of the page
+Quote Post
Sokrates
post 22.08.2008, 00:24:52
Post #3





Grupa: Zarejestrowani
Postów: 96
Pomógł: 0
Dołączył: 11.09.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Czyli że co nie ma możliwości przesłania pliku po przez AJAX...


--------------------
Pozdrawiam,
Sokrates
Go to the top of the page
+Quote Post
ucho
post 22.08.2008, 08:02:30
Post #4





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

Ostrzeżenie: (0%)
-----


Umieść formularz w iframe, ukryj po wysłaniu - nawet FF nie będzie mógł mieć nic przeciwko smile.gif Po załadowaniu pliku wysyłasz kod JS który wywołany w tym niewidocznym Iframe wywoła funkcję z głównej ramki która już normalnie ajaxem zaciągnie np. wynik obróbki pliku
Go to the top of the page
+Quote Post
Sokrates
post 22.08.2008, 14:01:41
Post #5





Grupa: Zarejestrowani
Postów: 96
Pomógł: 0
Dołączył: 11.09.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(ucho @ 22.08.2008, 09:02:30 ) *
Umieść formularz w iframe, ukryj po wysłaniu - nawet FF nie będzie mógł mieć nic przeciwko smile.gif Po załadowaniu pliku wysyłasz kod JS który wywołany w tym niewidocznym Iframe wywoła funkcję z głównej ramki która już normalnie ajaxem zaciągnie np. wynik obróbki pliku


Możesz jakoś jaśnie to opisać.
Bo nic z tego nie zrozumiałem ....


--------------------
Pozdrawiam,
Sokrates
Go to the top of the page
+Quote Post
nexis
post 22.08.2008, 22:17:18
Post #6





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Polecam SWFUpload


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
paziek
post 23.08.2008, 13:14:29
Post #7





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Nie polecam Flasha, jeśli da się inaczej.
iframe w tej chwili jest znacznie lepszym rozwiazaniem.
Go to the top of the page
+Quote Post
LBO
post 23.08.2008, 19:17:21
Post #8





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(wookieb @ 22.08.2008, 00:03:04 ) *
Nie ma takiej możliwości. Firefox blokuje wysyłanie plikóe przez JS. na IE bodajże pojdzie.


To są względy bezpieczeństwa i działają chyba na każdej przeglądarce. JavaScript nie ma dostępu do pól typu file, bo wyobraźcie sobie sytuację, gdy wysyłacie zdjęcia na jakieś forum, a to JS podmienia adresy djęć na adresy jakiś ważnych plików.
Go to the top of the page
+Quote Post
paziek
post 23.08.2008, 20:15:11
Post #9





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(LBO @ 23.08.2008, 20:17:21 ) *
To są względy bezpieczeństwa i działają chyba na każdej przeglądarce. JavaScript nie ma dostępu do pól typu file, bo wyobraźcie sobie sytuację, gdy wysyłacie zdjęcia na jakieś forum, a to JS podmienia adresy djęć na adresy jakiś ważnych plików.


Niby tak, ale możliwość odczytywania wybranego pliku chociażby dali. Skoro ktoś chciał go uploadować tradycyjnym sposobem, to i tak by się znalazł na serwerze. A, że najpierw przeleci przez JS..

W Firefoxie można skorzystać z API od obsługi plików, ale user musi najpierw wyrazić zgodę na nadanie dodatkowych uprawnień stronie - a zgoda jest pamięŧana tylko na czas sesji (czy nawet odświerzenia?). Nie to co z Javą.. gdzie jest pamięŧana, a do tego dajesz zgodę na praktycznie pełną kontrole PCeta.
Czasami posunięcia producentów przeglądarek są niejasne - przynajmniej z punktu widzenia webdevelopera.

Ten post edytował paziek 23.08.2008, 20:15:40
Go to the top of the page
+Quote Post
Sokrates
post 24.08.2008, 12:16:16
Post #10





Grupa: Zarejestrowani
Postów: 96
Pomógł: 0
Dołączył: 11.09.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Mimo wszystko wydaje mi się że jest możliwość
załadowania pliku po przez AJAX.

Ten link jest tego świetnym przykładem.
http://demo.swfupload.org/applicationdemo/index.php


--------------------
Pozdrawiam,
Sokrates
Go to the top of the page
+Quote Post
LBO
post 24.08.2008, 12:37:24
Post #11





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Tak?
To teraz proponuję zrobić teścik.
1. Wyłącz flasha?
2. Albo JS.

Na przedstawionym demie nawet nie będzie jak załadować pliku standardowo. Możliwe, że do obejścia, ale tak czy siak - trzeba będzie zrobić upload również tradycyjnie.
Go to the top of the page
+Quote Post
Edric
post 19.09.2008, 12:51:39
Post #12





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 23.04.2007

Ostrzeżenie: (0%)
-----


Da się!
Swego czasu zadałem takie pytanie na forum
advAJAX i przesyłanie plików
i też uzyskałem odpowiedzi, że się nie da. Poszukałem trochę i.. znalazłem. Rozwiązanie jest w moim ostatnim poście.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 15:12