Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasy]Obsluga uploadu
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
NuLL
Witam,

Postanowilem przestawic rozwiazanie pozwalajace na obiektowa obsluge uploadu plikow smile.gif Calosc nie jest specjalnie trudna do zrozumienia i wydaje mi sie iz moze czesci zgromadzonych tutaj osob pomoc zrozumiec choc po trosze dlaczego programowanie obiektowe (questionmark.gif)jest ladniejsze i lepsze niz proceduralne.

Pliki ze wzgledu na wielkosc wrzucilem na phpfi.com - oto linki oraz nazwy jakie ja mialem oraz jakie sa wykozystane w przykladzie smile.gifCalosc zipnieta -> http://null.avx.pl/files/upload.zip

I przyklad
  1. <?php
  2. //dolaczamy pliki
  3. require_once('class.uploadException.php');
  4. require_once('class.uploadedFile.php');
  5. require_once('class.uploadManager.php');
  6.  
  7. //jesli sa jakies pliki i jest plik o id plik_testowy
  8. if(uploadManager::hasFiles() && uploadManager::has('plik_testowy'))
  9. {
  10. try
  11. {
  12. //tworzymy obiekt pliku
  13. $testFile=uploadManager::get('plik_testowy');
  14.  
  15. if(!$testFile->isOk())
  16. {
  17. //jesli cos jest nie tak wyrzuc wyjatek z wiadomoscia
  18. throw new uploadException($testFile->getErrorAsString());
  19. }
  20.  
  21. //sprawdzanie rozszerzenia
  22. if(!$testFile->isValidExt('jpg','txt'))
  23. {
  24. throw new uploadException('Niepoprawne rozszerzenie pliku');
  25. }
  26.  
  27. //sprawdzanie wielkosci
  28. if(!$testFile->isValidSize('1000 KB'))
  29. {
  30. throw new uploadException('Plik jest za duzy');
  31. }
  32.  
  33. //przeniesc ze stara nazwa do katalogu /data
  34. if(!$testFile->moveWithOriginalName('data'))
  35. {
  36. throw new uploadException('Nie udalo sie przeniesc pliku.');
  37. }
  38.  
  39. //Udalo sie ;]
  40. echo 'Plik<b> '.$testFile->getOriginalName().'</b> pomyslnie zuploadowano<br>';
  41. //Nieprawda ze to ladniej wyglada questionmark.gif :-)
  42. }
  43. catch(uploadException $e)
  44. {
  45. //Lapiemy wyjatek i wypisujemy co nam powiedziano badz robimy co chcemy ;]
  46. echo $e->getMessage();
  47. }
  48. }
  49.  
  50. ?>
  51. <form method='POST' enctype='multipart/form-data'>
  52. Wybierz: <input type="file" name='plik_testowy'> 
  53. <input type='submit' values='Zuploaduj'>
  54. </form>


Wydaje mi sie ze komentarze sa wystarczajace - jak cos bedzie nie tak to pytac smile.gif


---
poprawilem linki do phpfi (tak trzeba: [ url=http://phpfi.com/137251]http://phpfi.com/137251[ /url]) i dodalem programowanie OBIEKTOWE
Ja_Szczur
proste, ładne, czytelne: może podobna klasa do obsługi grafiki? ;]
no i może skończą się tematy typu "jak/czym zrobić upload w php!?"

---
aha, popraw linki w poście :]
dr_bonzo
  1. <?php
  2. if(!$testFile->isOk())
  3. {
  4. //jesli cos jest nie tak wyrzuc wyjatek z wiadomoscia
  5. throw new uploadException($testFile->getErrorAsString());
  6. }
  7. ?>

To ma sprawdzac czy plik w ogole sie zuploadowal?
To nie lepiej przeniesc wyrzucanie wyjatku do

$testFile=uploadManager::get('plik_testowy');

?

Przydalo by sie jeszcze zwrocenie wszystkich plikow/nazw plikow.
NuLL
Cytat
proste, ładne, czytelne: może podobna klasa do obsługi grafiki? ;]no i może skończą się tematy typu "jak/czym zrobić upload w php!?"

Postaram sie to uzupelnic i zrobic z tego gotowe rozwiazanie Rkingsmiley.png

Cytat
To ma sprawdzac czy plik w ogole sie zuploadowal?To nie lepiej przeniesc wyrzucanie wyjatku do$testFile=uploadManager::get('plik_testowy');?Przydalo by sie jeszcze zwrocenie wszystkich plikow/nazw plikow.

Chodzi Ci o zwrocenie np. tablicy ze wszystkimi plikami ? smile.gif Bo tym w sumie nie pomyslalem - no i musze dodac obsluge uploadu tablicowego smile.gif
bim2
Uau, nice tongue.gif ale nie moge tymczasowo działac na php 5. podoba mi się tongue.gif

PS. Czemu wczesnije nie wiedziałem o istnieniu func_get_args() ;( a gdybym wiedział miałbym ze 100 problemów mniej!
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.