2012-02-22 16 views
13

Próbuję pracować z wtyczką jpery-file-upload blueimp. Wydaje się być dobrym narzędziem do przesyłania, ale dokumentacja nie jest pomocna.Wtyczka jquery-file-upload: Jak zmienić ścieżkę wysyłania?

Kiedy pracuję z pobieralnym skryptem demo, wszystko jest w porządku. Ale gdy chcę zmienić ścieżkę przesyłania, to nie działa.

Próbowałem zmienić w index.php, ścieżkę działania, tak:

form id="fileupload" action="../uploads/" method="POST" enctype="multipart/form-data" 

i dodaje foldery „pliki” i „miniaturki” w moim „aktualizacje” folderu.

Wezwanie GET jest ok, jak widzę w Firebug:

GET http://localhost/alliance_pretests/uploads/ 200 OK -8ms 

Ale kiedy uruchomić akcję wysyłania, POST odpowiada mi (jeszcze w Firebug):

POST http://localhost/alliance_pretests/uploads/ 404 Not Found 44ms 

I nie zmieniłem niczego innego. O czym zapomniałem?

Dlaczego wywołanie GET widzi folder, ale nie wywołanie POST?

Z góry dziękuję. Pozdrawiamy.

+0

Jak korzystasz z tej wtyczki? czy zaimplementowałeś serwer lub użyłeś wersji Node.js? musisz zaktualizować backend, aby określić katalog do przesyłania – ManseUK

Odpowiedz

18

Działanie formularza nie jest folderem, w którym powinien znajdować się twój folder przesyłania. Działanie formularza to skrypt, w którym dane są wysyłane po przesłaniu. (więcej informacji o działaniach formularza http://www.w3schools.com/tags/att_form_action.asp)

Spróbuj znaleźć docelowy folder do przesłania lub zajrzyj do skryptu.

Update: po pobraniu biblioteki

Należy spojrzeć na serwerze/php/upload.class.php i tam masz kilka zmiennych z lokalizacją folderu Dodano:

'script_url' => $this->getFullUrl().'/', 
'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/', 
'upload_url' => $this->getFullUrl().'/files/', 

Tou powinien zastąpić /files/ swoim własnym folderem wysyłania.

+0

Rozumiałem twoje wyjaśnienie i zmieniłem kod. Teraz to działa dobrze. Wielkie dzięki. Ale jak zadeklarować folder o jeden poziom wyżej, np. "../uploads"? Próbowałem, ale to nie działa (błąd JSON). – mlh

+1

Jak to zmodyfikowałeś? Powinno to być jak "upload_url" => '../ uploads/'' – Mike

+2

To nie działało, ponieważ nie usunąłem $ this:' upload_url '=> $ this ->' ../ uploads/' Teraz jest OK. Wielkie dzięki! – mlh

21

Chociaż @mugur dostarczany jest poprawna odpowiedź, patrząc na klasy php dołączonej bibliotece pierwszy parametr w metodzie konstruktu „Opcje” i deklarując tablicę asocjacyjną następująco:

$options = array('upload_dir'=>'upload/directory/of/your/choice', 'upload_url'=>'upload/directory/of/your/choice'); 

i przepuszczenie go jako pierwszy parametr podczas tworzenia instancji klasy:

$upload_handler = new UploadHandler($options); 

pozwoli Ci zmienić katalog przesłać za każdym razem użyć klasy zamiast zmieniania kodu źródłowego.

+0

Ale gdzie dodać ten kod? Dzięki –

+2

musisz dodać te opcje do pliku, w którym tworzysz instancję klasy, jeśli korzystasz z przykładu, to jest to [index.php] (https://github.com/blueimp/jQuery-File-Upload/blob /master/server/php/index.php). To by wyglądać tak: 'error_reporting (E_ALL | E_STRICT);' ' require (''); UploadHandler.php' ' $ options = array ('upload_dir' => 'upload/katalog/of/your/choice ', ' '' upload_url '=>' upload/directory/of/your/choice '); ' ' $ upload_handler = new UploadHandler ($ options); ' –

+0

Jaką wartość powinienem podaj 'upload_url', jeśli chcę przesłać moje pliki poza folder' www'? – Adam

Powiązane problemy