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
Nie da się.
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.
Tylko to wtedy nie AJAX, a ajaxopodobne coś. AJAX używa XHR.
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ł)
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ć.
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.
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.
Wszystko jest tak samo, jest przepisane indeksami. Tablica $_FILES jest identyczna na starcie i na koncu