Location: PHPKode > projects > phpC Forum > RSamaium-phpcforum-bddd8d5/phpcforum-1.0/includes/class/upload.class.php
<?php
/**-------------------------------------------------
Classe Upload: Charge un fichier sur le serveur
Classe parente : File

Date de finition : 28 Novembre 2009
Dernière modification --

Créé par Samuel Ronce

-- Tous droits réservés --
//------------------------------------------------\\

Constructeur :

	__construct(String $post_file, String $upload_dir)	: 	$post_file : la variable superglobale $_FILES['file']
															$upload_dir : le chemin où le fichier sera uploadé.

Méthode public :

	bool hasUploadError() 								: vérifie si il y a une erreur

	int uploadTypeError()								: retourne l'erreur

	String uploadName()									: retourne le nom du fichier uploadé

	String uploadType()	

	String uploadSize()									: retourne la taille du fichier uploadé

	bool uploadMoveFile(String $new_name, String $prefix = '', array $tab_safe = null)	
	: déplace le fichier vers un dossier. Retourne true si il est déplacé
	$new_name : Le nouveau nom du fichier. Si il vaut "null", le fichier aura un nom aléatoire avec un préfixe ($prefix) pouvant être définie.
	$tab_safe : Tableau contenant les extensions des fichiers pouvant être uploadés.
	
	bool extensionAutorised(array $tab_safe)			: vérifie si l'extension du fichier est contenu dans le tableau $tab_safe
	
	String keyMd5()										: retourne la clé md5 du fichier temporaire ou du nouveau fichier uploadé
					
--------------------------------------------------- **/
class Upload extends File {

	private $n_file;
	private $upload_dir;
	private $post_file;

	function __construct($post_file, $upload_dir) {
		parent::__construct($post_file['name']);
		$this->upload_dir = $upload_dir;
		$this->post_file = $post_file;
	}
	
	public function hasUploadError() {
		if ($this->post_file['error'] > 0) 
			return true;
		else
			return false;	
	}
	
	public function uploadTypeError() {
		if ($this->uploadError())
			return $this->post_file['error'];
	}
	
	public function uploadName() {
		return $this->post_file['name'];
	}
	
	public function uploadTmp() {
		return $this->post_file['tmp_name'];
	}
	
	public function uploadType() {
		$array_name = explode('/', $this->post_file['type']);
		return strtoupper($array_name[sizeof($array_name)-1]);
	}
	
	public function uploadSize() {
		return $this->post_file['size'];	
	}
	
	public function uploadMoveFile($new_name, $prefix = '', $tab_safe = null) {
		$move = false;
		if ($new_name == null)
			$rename = $this->newNameRandom($prefix);
		else
			$rename = $this->upload_dir . '/' . $new_name;
			
		if ($tab_safe != null or !empty($tab_safe)) {
			if ($this->extensionAutorised($tab_safe))
				return move_uploaded_file($this->post_file['tmp_name'], $rename);
		}
		else
			return move_uploaded_file($this->post_file['tmp_name'], $rename);
	}
	
	private function newNameRandom($prefix) {
		$size_time = strlen(time());
		$size_name = strlen($this->uploadName());
		$exten_upload = strrchr($this->upload_name(), '.');
		$sub_time = substr(time(), $size_time-6, $size_time-1);
		$sub_name = $size_name <= 5 ? $this->uploadName() : substr($this->uploadName(), 0, 5);
		$new_name = $prefix . str_replace(' ','', $sub_name . $sub_time) . $exten_upload;
		$this->n_file = $new_name;	
		return $this->upload_dir . '/' . $new_name;
	}
	
	public function extensionAutorised($tab_safe) {
		if (in_array($this->uploadType(), $tab_safe)) {
			return true;
		}
		else
			return false;
	}
	
	public function keyMd5() {
		if ($this->n_file != '')
			$name = $this->n_file;
		else
			$name = $this->uploadName();
		return md5_file($this->upload_dir . '/' . $name);
	}
}
?>
Return current item: phpC Forum