Kolejna odsłona biblioteki fileUpload

Ten projekt pomału zaczyna mnie przerastać. Wydaje się, że sam jest esencją przerostu formy nad treścią, ale ciągle widzę w nim braki, rzeczy, które można, a nawet trzeba zrobić lepiej. Jakieś dwa tygodnie temu Nospor zagroził, że mi kolorek zabierze na forum i kazał poprawiać błędy. Ja lubię swój kolorek, więc wziąłem się do roboty w zeszły weekend i dzisiaj oddaję wersję 1.4 biblioteki, która zorientuje wasze skrypty uploadu w jedyny właściwy sposób - obiektowy sposób.

fileUpload 1.4

Dodałem małe demo
Pliki można oglądać pod adresem
http://kavuka.cal.pl/fileUpload/uploads

Ciągle nie mogę znaleźć odpowiednio dużo czasu, aby napisać jakiś konfigurator, czy też porządną dokumentację z przykładami użycia. Kiedy patrzę na interfejs, to wydaje mi się, że jest to solidna podstawa do budowania dowolnie wielkich skryptów. Mam nadzieję, że nie jest to tyko moje odczucie.

Zamiany w tej wersji:

uploader:

  • Możliwość wykonania tzw. rollback, czyli usunięcia plików z lokalizacji docelowej.
  • Automatyczna zmiana nazwy pliku z możliwością określenia jej prefiksu, lub sufiksu
    (obiekt uploadDirectoryMonitor)
  • Każdy plik może teraz zostać wysłany do innego katalogu, bo obiekt uFile posiada teraz własne metody
    uFile::setDestination(), uFile::getDestination() oraz uFile::hasDestination()
  • Każdy obiekt uFile zawiera teraz dodatkową metodę getRefuseCode(), która zwraca kod błędu odrzucenia, oraz metodę getRefuseMessage(), która zwraca komunikat odrzucenia.
  • Klasa fileUpload zyskała metodę reset(), która zeruje ustawiania obiektu.
  • Obiekt fileUpload umożliwia teraz upload pojedynczego pliku z kolekcji poprzez metodę
    fileUpload::uploadFile().

filtry:

  • Filtry zyskały nową klasę bazową uploadFilter
  • Nowy obiekt uploadFilterRefuse, który zawiera informacje na temat odrzucenia danego pliku.
  • Obiekt uploadRefuseManager, który zawiaduje komunikatem odrzucenia przez filtry.
  • Kody i komunikaty odrzucenia przez filtr w zewnętrznym pliku .ini, który można edytować.

Aby pokazać raz jeszcze prostotę użycia biblioteki, poniżej skrypt, który przenosi pliki do różnych katalogów - w zależności od jego typu.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
  $uploader
=new fileUpload();
    
  
$readyToUpload=new imageUploadFilter($files->getIterator());
    
  foreach(
$readyToUpload as $file)
  {
    
$file->setDestination('./fotki'true);
    
$uploader->uploadFile($file);
  }
  
  
$uploader->reset();
    
  
$readyToUpload=new extensionUploadFilter($files->getIterator(), array(".txt"));
  foreach(
$readyToUpload as $file)
  {
    
$file->setDestination('./tekst'true);
    
$uploader->uploadFile($file);
  }
?>


W tym przykładzie nie jest użyta metoda fileUpload::doUpload(), która przenosi całą kolekcję plików do wybranych katalogów, a metoda fileUpload::uploadFile(), która przenosi jeden przekazany parametrem plik. W dalszym cięgu obiekt fileUplaod zachowuje swoje wlaściwości, takie jak np. zgłoszone błędy, lub ostrzeżenia.

Na koniec przykład dla oldwayowców, dla których filtry mają ukryte, wewnętrzne fuj
1
2
3
4
5
6
7
8
9
10
<?php
  $uploader
=new fileUpload($files->getIterator());
  foreach(
$files->getIterator() as $file)
  {
    if(
$file->getExtension()==".jpg")
    {
      
$uploader->uploadFile($file);
    }
  }
?>

Zainteresowanym życzę miłego wdrażania. Wszelkie uwagi, zwłaszcza krytyczne - są mile widziane. Jak zwykle adres to ideahaveme at gmail kropka com.

Komentarze

Info:

Nick:
Treść:

nospor napisał(a)
No, i tak ma być. Ale jeszcze pewnie pomarudze :)
Wojtek napisał(a)
Siakies demo tego jest ?
cysiaczek napisał(a)
Uruchomiłem mini demo pod adresem http://kavuka.cal.pl/fileUpload/
Pliki można oglądać w http://kavuka.cal.pl/fileUpload/uploads

Przyjmuje tylko obrazki jpg i png o maksymalnym rozmiarze 128 KB.
To jest po prostu działająca kopia tego, co w repozytorium.
 
Symfony_button