<?php /** * Klasa odpowiedzialna za upload * */ class Upload { /** * Tablica zawierająca dopuszczalne formaty plików, * jeżeli pusta to pozwala na wgrywanie dowolnego rodzaju pliku * @var array */ /** * Zawiera rozszerzenie pliku * @var string */ protected $sFileExtension = ''; /** * Dopuszczalny rozmiar pliku w bitach, domyślnie 1 MB * @var int */ protected $iMaxSize = 8388608; /** * Tablica zawierająca kody błędów * @var array */ 1, //plik ma błędny typ 2, //plik jest zbyt duży 3, //brak pliku 4, //ścieżka nie pozwala na zapis 5. //inny błąd ); /** * Ścieżka gdzie pliki mają być wgrywane * @var string */ protected $sUploadPath = ''; /** * Nazwa wgranego pliku, jeżeli pusta zostanie wygenerowana losowa * @var string */ protected $sFileName = ''; /** * Czy zachować oryginalną nazwę pliku, * uwaga jeżeli true, to sFileName nie jest brane pod uwagę i * zostanie nadpisana * @var bool */ protected $bOriginalName = false; /** * Zawiera pełną ścieżkę wgranego pliku * @var string */ protected $sResult; /** * Zawiera kod błędu * @var int */ protected $iErrorCode = 0; /** * Konstruktor * @param string $sUploadPath * @param array $aAllowedExtensions [optional] * <p>Dopuszczalne formaty plików</p> * @param int $iMaxSize [optional] * <p>Maksymalny rozmiar pliku wgrywanego, * podawana w bitach, domyślnie 1MB (8388608 bitów)</p> * @return \lib_Upload */ $this->sUploadPath = (string) $sUploadPath; $this->iMaxSize = (int) $iMaxSize; $this->aAllowedExtensions = $aAllowedExtensions; return $this; } /** * @param type $sFileName * @return \lib_Upload */ public function setFileName($sFileName) { $this->sFileName = $sFileName; return $this; } /** * Zwraca kod błędu * @return int */ public function getErrorCode() { return $this->iErrorCode; } /** * Zwraca pełną scieżkę do pliku wgranego */ public function getResult() { return $this->sResult; } /** * Metoda sprawdzająca czy plik ma poprawne rozszerzenie * return bool */ public function checkExtension($sFileName) { } return true; } else { return false; } } public function moveFile($sFileIndex) { if($this->bOriginalName) { $this->sFileName = $_FILES[$sFileIndex]['name']; } $this->sUploadPath .= '/'; } $this->sResult = $this->sUploadPath.$this->sFileName; return true; } else { return false; } } /** * Metoda odpowiedzialna za upload * @param string $sFileIndex * @return boolean */ public function upload($sFileIndex) { if($_FILES[$sFileIndex]['size'] > $this->iMaxSize ){ $this->iErrorCode = 2; return false; } if(!$this->checkExtension($_FILES[$sFileIndex]['name'])) { $this->iErrorCode = 1; return false; } if($this->moveFile($sFileIndex)) { return true; } else { $this->iErrorCode = 4; return false; } }else { $this->iErrorCode = 3; return false; } } } $oUpload = new Upload('tmp'); if($oUpload->upload('img')) { //plik się wgrał poprawnie } else { }
W zamyślę to będzie klasa matka dla klas odpowiedzialnych za wgrywanie i zabawę z obrazkami czy bardziej specyficznymi plikami