Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]class upload image
Forum PHP.pl > Forum > PHP
fr33d0m
Hello,
Dawno temu znalazłem pewną klasę PDO do obsługi uploadu zdjęć. Ostatnio miałem potrzebę aby wykorzystać ową klasę w moim projekcie na większą skalę. Sama klasa jest świetna, nie duża i intuicyjna, jednak posiada pewien bug, który zgłosiłem autorowi ponad 2tygodnie temu - pozwala na upload plików o różnym rozszerzeniu .exe/.php/etc. mimo iż przy wgrywaniu tego typu rozszerzeń plików, wywala informacje o błędzie ustawione uprzednio w klasie. Nie umiem i nie lubię pisać obiektowo, a autor klasy widać nie ma czasu na wypuszczenie fix'a. Proszę Was o analizę klasy oraz modyfikację by dopuszczalne formaty były tylko jako: .jpg/.png/.gif - prawdopodobnie problem leży w błędnej funkcji toDie lub crop - dla tych mądrzejszych pewnie to 5 minut zabawy.

Niestety nie mogę wrzucić tu owej klasy ponieważ forum ma ograniczenie ilości znaków...

http://pastebin.com/cP9hpb1R

Odświeżam temat, proszę o przeniesienie do działu oferty.
Oferuje reklamę do 2 tygodni w postaci linka lub banera 468x90 na moim forum, gdzie statystyki miesięczne sięgają 450,000 wejść.

Proszę o fix'a dla powyższej klasy.

Pozdrawiam
memory
Ta klasa w ogóle nie działa. Jeżeli chodzi o twój problem to będzie akceptował wszystkie pliki ponieważ masz tak ustawione w php features.file-upload.errors
Zamień na tą część:

  1. if (in_array($img_type, $this->type)) {
  2. if(move_uploaded_file($img_tmp_name, $target_path)) {
  3.  
  4. // add uploaded file to $this->source_file for resize function quick access
  5. $this->source_file = $this->uploadTo.basename($img_name);
  6.  
  7. // Return image, array or blob if required
  8. switch(strtolower($this->returnType)) {
  9. case 'array':
  10. $_ar = array(
  11. 'image' => basename($img_name),
  12. 'path' => $this->uploadTo,
  13. 'size' => $img_size
  14. );
  15. return $_ar; break;
  16. case 'fullpath':
  17. return (file_exists($target_path)) ? $target_path : false; break;
  18. case 'blob':
  19. if(file_exists($target_path)) {
  20. $fo = fopen($target_path, 'r');
  21. $blob = mysql_real_escape_string(fread($fo, filesize($target_path)));
  22. fclose($fo);
  23. return $blob; break;
  24. } else { return false; break; }
  25. default:
  26. return (file_exists($target_path)) ? true : false; break;
  27. }
  28. } else{
  29. $this->doDie($this->errors['upl-failed']); exit;
  30. }
  31. } else return $this->doDie($this->errors['upl-ext']);


Na początku klasy dodaj co tam tylko chcesz
  1. public $type = array('image/png','image/gif','image/jpg','image/jpeg');
fr33d0m
Hmm... mi ta klasa ogólnie działa - i to najlepiej oferując takie możliwości z wszystkich testowanych, z pierwszych trzech stron Google.
Czyli wynika na to, że klasa nie jest błędna tylko problem leży po stronie konfiguracji PHP?
Zmieniłem kod według Twojego schematu i ze wstępnych analiz wynika, że problem rozwiązany. Uhh... smile.gif
Odnośnie reklamy dogadamy się na PW.

Dzięki wielkie!
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.