Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]upload kilku plików naraz, tworzenie miniatur
Forum PHP.pl > Forum > Przedszkole
agata
Witam, mam kod odpowiedzialny za upload kilku plików na raz oraz tworzenie miniatur tych plików, o to kod:
  1. function do_upload()
  2. {
  3.  
  4. $set_nr = $_POST['number'];
  5. $sek = time();
  6.  
  7. for ($i=0; $i<$set_nr; $i++){
  8.  
  9. if(!($_FILES['file'.$i])){
  10. echo 'Nie załadowano plików do pól nr '.$i;
  11. }else{
  12.  
  13. $plik_tmp = $_FILES['file'.$i]['tmp_name'];
  14. $plik_nazwa = $_FILES['file'.$i]['name'];
  15. $plik_rozmiar = $_FILES['file'.$i]['size'];
  16.  
  17. if(is_uploaded_file($plik_tmp)) {
  18. move_uploaded_file($plik_tmp, 'system/file/'.$sek.$i.$plik_nazwa);
  19.  
  20. $plik = 'system/file/'.$sek.$i.$plik_nazwa.'<br/>';
  21.  
  22. $this->load->library('image_lib');
  23. // konfiguracja
  24. $config['image_library'] = 'GD2';
  25. $config['source_image'] = $plik;
  26. $config['new_image'] = 'system/miniatury/'.$plik_nazwa;
  27. $config['create_thumb'] = TRUE;
  28. $config['maintain_ratio'] = TRUE;
  29. $config['width'] = 50;
  30. $config['height'] = 50;
  31. // przypisanie konfiguracji
  32. $this->image_lib->initialize($config);
  33. // wykonanie
  34. $this->image_lib->resize();
  35. echo $config['new_image'].'<br/>';
  36. }else{
  37. echo 'Nie udało się utworzyć miniatury<br/>';
  38. echo $plik.'<br/>';
  39.  
  40. }
  41.  
  42. }
  43.  
  44. }
  45. }


Mam problem z tworzeniem miniatur, jest to funkcja w codeigniter, która zadziałała mi na początku raz i potem już przestała tworzyć miniatury. Nie wiem dlaczego czy coś jest źle w kodzie, ja nie mogę znaleźć błędów. Tym bardziej że jak wyświetlam sobie $config['new_image'] - to jest wyświetlana ścieżka z nazwą miniatury która powinna zostać utworzona a nie zostaje.

Troszkę się już zamotałam z tym kodem więc przepraszam za głupie pytanie, jak ustawić warunek if(isset($_FILES['...])) aby sprawdzał do którego z pól nie został załadowany plik?
To co mam obecnie w ogóle nie reaguje.

Proszę o pomoc.
erix
Cytat
Troszkę się już zamotałam z tym kodem więc przepraszam za głupie pytanie, jak ustawić warunek if(isset($_FILES['...])) aby sprawdzał do którego z pól nie został załadowany plik?
To co mam obecnie w ogóle nie reaguje.

var_dump na $_FILES co pokazuje?

Poza tym, co jest w logach?
agata
  1. array(5) { ["name"]=> string(5) "3.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(24) "C:\xampp\tmp\phpD7DF.tmp" ["error"]=> int(0) ["size"]=> int(29540) } system/miniatury/3.jpg
  2. array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } Plik nie został dodany
  3. array(5) { ["name"]=> string(12) "IMG_3327.JPG" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(24) "C:\xampp\tmp\phpD81F.tmp" ["error"]=> int(0) ["size"]=> int(85633) } system/miniatury/IMG_3327.JPG


zwrócone dane przez var_dump są poprawne.

Nie wiem czy dobrze rozumiem, ale chyba nie da się w ten sposób postawić warunku if bo do $_FILES[...] za każdym razem jest ładowana tablica, nawet kiedy plik nie został wybrany jest przesyłana tablica tyle ze pusta, dlatego warunek przechodził.

Rozwiązałam to w ten sposób że jeśli (strlen([file$i]['name'])>0) to są wykonywane dane operacje.

Dzięki za podpowiedź z var_dump.

Nadal jednak istnieje problem z tworzeniem miniatur, nie wiem dlaczego nie są tworzone funkcja jest sprawna na 100% wcześniej miałam ją podpiętą do formularza który ładował jeden plik i było ok. coś się tutaj dzieje w przypadku kilku plików.

EDIT -- ROZWIĄZANIE

rozwiązałam problem miniatur.
Moja głupota i wprowadzanie zmian co chwile.

  1. $plik = 'system/file/'.$sek.$i.$plik_nazwa.'<br/>';


<br/> dołączał do ścieżki pliku i dlatego nie mógł pobrać pliku na którym miał wykonać miniaturę.

Wszystko działa, przepraszam za zamieszanie.
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.