[jQuery,php] Przesyłanie $_FILES przez ajax

[jQuery,php] Przesyłanie $_FILES przez ajax
JM
  • Rejestracja: dni
  • Ostatnio: dni
1

Witam, chciałbym sie dowiedzieć jak przesłać forma z plikiem przez ajax'a? korzystałem z jquery.forms.js, ale działają mi tak jedynie formy post/get

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Nie da się.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gród Króla Kraka
0

Da się. Sposób polega na przekierowaniu <form> ( z atrybutem enctype="multipart/form-data" ) do ukrytej ramki pływającej, w której skrypt php odbierze plik. Ewentualnie możesz zrobić osobny formularz, który będzie przekierowywał nie do ramki, tylko do pliku; sam formularz natomiast wyświetlać w ramce pływającej.

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Tylko to wtedy nie AJAX, a ajaxopodobne coś. AJAX używa XHR.

JM
  • Rejestracja: dni
  • Ostatnio: dni
0

Inne pytanie, przesyłam tablice $_FILES w wartości $_POST['files_vars'] (nie pytajcie dlaczego, za bardzo to jest zagmatwane)
i teraz jak wczytuje z powrotem w docelowej funkcji $_FILES = $_POST['files_vars'] to nie działa mi funkcja move_upload_file, jest jakaś możliwość oszukania tej funkcji? (dodam ze w miedzyczasie jest przesyłana ajaxem ta tablica $_POST, dlatego is_upload_file nie traktuje tego pliku tak jak bym chciał)

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Ty chcesz całą tablicę $_FILES nadpisać tablicą $_POST['files_vars']. Zrób sobie var_dump i zobacz jakie dane są przechowywane w $_FILES po wrzuceniu pliku, a czym ty próbujesz to zastąpić.

JM
  • Rejestracja: dni
  • Ostatnio: dni
0

Jest dobrze, wczesniej wpisuje do $_POST['files_vars'] całą tablice $_FILES, wysyłam to ajaxem, po czym odbieram i cala tablica jest tylko move_upload_file głupieje.

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

A w $_FILES nie ma przypadkiem lokacji tymczasowej pliku - zdeka nieprzewidywalnej? Przepisuj indeksami:

Kopiuj
$_FILES['file_name'] = $_POST['files_vars']['file_name']

To będziesz miał pewność że jest OK.

JM
  • Rejestracja: dni
  • Ostatnio: dni
0

Wszystko jest tak samo, jest przepisane indeksami. Tablica $_FILES jest identyczna na starcie i na koncu

  • Rejestracja: dni
  • Ostatnio: dni
0

Tylko to wtedy nie AJAX, a ajaxopodobne coś. AJAX używa XHR.

Nieprawda. Gdzie jest powiedziane, że AJAX musi używać XHR? Wiesz w jakich okolicznościach po raz pierwszy publicznie padła nazwa AJAX? AJAX jest z definicji pomysłem na to jak ładować na stronę (lub na serwer) treści bez przeładowywania wszystkiego. Tyle!

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0
http://pl.wikipedia.org/wiki/AJAX napisał(a)

AJAX (ang. Asynchronous JavaScript and XML, asynchroniczny JavaScript i XML)

Zgadzam się że to jest asynchroniczne, ale nie AJAX. Stwierdzenie, że asynchroniczny = AJAX wzięło się z tego, że niezorientowani w temacie nawet interaktywne menu i rich edytory "robią w ajaxie" (zobacz dział Newbie). Po samej nazwie widać do czego to jest. Asynchroniczny JavaScript i XML. Iframe chyba nie zostały zaprojektowane z myślą o słaniu XMLa, bardziej HTML.

ŁF
  • Rejestracja: dni
  • Ostatnio: dni
0

wracając do tematu: "move_uploaded_file()" zadziała tylko w tym samym requeście, w którym został wysłany plik. po zakończeniu requesta pliki z nim związane, tymczasowo zapisane na serwerze, są usuwane.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.