[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

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