Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX] Upload pliku i błąd, że plik nie został wybrany
Forum PHP.pl > Forum > Przedszkole
in5ane
Cześć. Dopisuję coś w skrypcie napisanym w CodeIgniter i mam problem. Próbuję zrobić upload plików poprzez ajax, ale coś nie prądzi. Plik niby dochodzi do kontrolera, ale uploader CodeIgniter'a wywala błąd. Poniżej moje kody, może ktoś co poratuję. Z góry dzięki.


html:
  1. <form id="uploadImage" method="post" enctype="multipart/form-data">
  2. <input type="file" name="fileUploadField" id="fileUploadField" />
  3. </form>


java script:
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. url: '<?=site_url('screen/upload')?>',
  3. data: $('#fileUploadField'),
  4. type: 'POST',
  5. success: function(data) {
  6. if (data != 'false')
  7. {
  8. alert("super");
  9. }
  10. else
  11. {
  12. alert("error");
  13. }
  14. },
  15. error: function() {
  16. alert("error");
  17. }
  18. });
[JAVASCRIPT] pobierz, plaintext


php:
  1. public function upload()
  2. {
  3. $config['upload_path'] = 'public/uploads/';
  4. $config['file_name'] = time().mt_rand().rand();
  5. $this->load->library('upload', $config);
  6. if (!$this->upload->do_upload('fileUploadField'))
  7. {
  8. print_r($this->upload->display_errors());
  9. print_r($_POST);
  10. exit(); // dodane podczas debugowania
  11. echo 'false';
  12. }
  13. else
  14. {
  15. echo $config['file_name'];
  16. }
  17. exit();
  18. }


post:
Kod
fileUploadField=DSCN2582.JPG


odpowiedź:
Kod
<p>You did not select a file to upload.</p>
Array
(
    [fileUploadField] => DSCN2582.JPG
)
nospor
ajaxem nie da sie uplosowac plikow.

Cytat
Plik niby dochodzi do kontrolera,
Tyle czasu na forum, tyle napisanych aplikacji i jeszcze nie wiesz, ze plik po wyslaniu znajduje sie w tablicy $_FILES a nie $_POST? Tobie teraz jedynie dochodzi nazwa pliku a nie plik.

Podsumowujac: ajaxem nie da sie uplodowac plikow smile.gif Do tego ludzie wykorzystuja albo flashe, albo iframe albo inne cuda na kiju
Turson
Polecam Plupload do tego
in5ane
Da się zrobić upload bez przeładowania strony. Wystarczy użyć XMLHttpRequest.
nospor
No to podziel sie kodem, chetnie sie czegos nowego nauczymy
in5ane
  1. var file = document.getElementById('fileToUpload').files[0];
  2. var formData = new FormData();
  3. formData.append("fileToUpload", file);
  4. var xhr = new XMLHttpRequest();
  5. var url = "http://website.com/upload.php";
  6. xhr.open("POST", url, false);
  7. xhr.send(formData);
I w PHP normalnie się odczytuje pliki z $_FILES. Można do tego dorobić eventy, jak np. czy plik się wgrał, czy nie było błędu, czy stworzyć progress bar.
nospor
A jak wyglada klasa FormData?
nospor
Az z ciekawosci w wolnej chwili na to lukne i sie pobawie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.