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

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

0

Nie da się.

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.

0

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

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ł)

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ć.

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.

0

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

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

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

0

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

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!

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1