Gelişmiş Dosya Yükleme Sınıfı

<?php
Class Yukle{
	var $maxBoyut;
	var $gonderilenDosya;
	var $hatalar;
	function Yukle($gonderilenDosya){
		$this->gonderilenDosya = $gonderilenDosya;
		$this->gonderim = false;
		$this->maxBoyut=min($this->boyutGetir(ini_get('post_max_size')), $this->boyutGetir(ini_get('upload_max_filesize')));  
	}
	function kaydet($dizin, $alan, $ustuneyaz,$izin=0777){
		$this->gonderim = true;
		if($this->gonderilenDosya[$alan]['size'] < $this->maxBoyut && $this->gonderilenDosya[$alan]['size'] >0){
			$hatayok = true;
			$this->gonderim = true;
			$gecici  = $this->gonderilenDosya[$alan]['tmp_name'];
			$dosya      = $this->gonderilenDosya[$alan]['name'];
			$tumu       = $dizin.$dosya;
			if(file_exists($tumu)){
				if($ustuneyaz){
					@unlink($tumu)         || $hatayok=false; $this->hatalar  = "Yukleme sinifi kaydetme hatasi: uzerine yazilamiyor ".$tumu."<BR>";
					@copy($gecici,$tumu) || $hatayok=false; $this->hatalar .= "Yukleme sinifi kaydetme hatasi: kopyalanamiyor ".$tumu."<BR>";
					@chmod($tumu,$izin)    || $erhatayokrors=false; $this->hatalar .= "Yukleme sinifi kaydetme hatasi: izinleri degistirilemiyor: ".$tumu."<BR>";
				}
			}else{
				@copy($gecici,$tumu)   || $hatayok=false;$this->hatalar  = "Yukleme sinifi kaydetme hatasi: kopyalanamiyor ".$tumu."<BR>";
				@chmod($tumu,$izin)      || $hatayok=false;$this->hatalar .= "Yukleme sinifi kaydetme hatasi: izinleri degistirilemiyor: ".$tumu."<BR>";
			}
			return $hatayok;
		}elseif($this->gonderilenDosya[$alan]['size'] > $this->maxBoyut){
			$this->hatalar = "Dosya boyutu maksimum dosya boyutu ".$this->maxBoyut." baytı aşıyor";
			return false;
		}elseif ($this->gonderilenDosya[$alan]['size'] == 0){
			$this->hatalar = "Dosya boyutu 0 bayt";
			return false;
		}
	}
	function farkliKaydet($dosyaAdi, $dizin, $alan, $ustuneyaz,$izin=0777){
		$this->gonderim = true;
		if ($this->gonderilenDosya[$alan]['size'] < $this->maxBoyut && $this->gonderilenDosya[$alan]['size'] >0){
			$hatayok = true;
			$gecici  = $this->gonderilenDosya[$alan]['tmp_name'];
			$tumu       = $dizin.$dosyaAdi;
			if (file_exists($tumu)){
				if ($ustuneyaz){
					@unlink($tumu)         || $hatayok=false; $this->hatalar  = "Yukleme sinifi farkli kaydetme hatasi: uzerine yazilamiyor ".$tumu."<BR>";
					@copy($gecici,$tumu) || $hatayok=false; $this->hatalar .= "Yukleme sinifi farkli kaydetme hatasi: kopyalanamiyor ".$tumu."<BR>";
					@chmod($tumu,$izin)    || $hatayok=false; $this->hatalar .= "Yukleme sinifi farkli kaydetme hatasi: kopyalanamiyor".$tumu."<BR>";
				}
			}else{
				@copy($gecici,$tumu)   || $hatayok=false; $this->hatalar  = "Yukleme sinifi farkli kaydetme hatasi: kopyalanamiyor ".$tumu."<BR>";
				@chmod($tumu,$izin)      || $hatayok=false; $this->hatalar .= "Yukleme sinifi farkli kaydetme hatasi: izinleri degistirilemiyor: ".$tumu."<BR>";
			}
			return $hatayok;
		}elseif($this->gonderilenDosya[$alan]['size'] > $this->maxBoyut){
			$this->hatalar = "File size exceeds maximum file size of ".$this->maxBoyut." bytes";
			return false;
		}elseif($this->gonderilenDosya[$alan]['size'] == 0){
			$this->hatalar = "File size is 0 bytes";
			return false;
		}
	}
	function boyutGetir($boyut){
		$ek = strtoupper(substr($boyut, -1));
    if(!in_array($ek,array('P','T','G','M','K'))){
			return (int)$boyut;  
    } 
    $deger = substr($boyut, 0, -1);
    switch ($ek) {
			case 'P': $deger *= 1024;
			case 'T': $deger *= 1024;
			case 'G': $deger *= 1024;
			case 'M': $deger *= 1024;
			case 'K': $deger *= 1024;
      break;
    }
    return (int)$deger;
	}
	function dosyaAdi($alan){
		return $this->gonderilenDosya[$alan]['name'];
	}
	function dosyaTipi($alan){
		return $this->gonderilenDosya[$alan]['type'];
	}	
	function dosyaBoyutu($alan){
		return $this->gonderilenDosya[$alan]['size'];
	}
}
if($_FILES){
	$u=new Yukle($_FILES);
	$u->kaydet("C:/tmp/", "file", $ustuneyaz=true,$izin=0777);
	$u->farkliKaydet("test2.pdf","C:/tmp/", "file", $ustuneyaz=true,$izin=0777);
	echo $u->dosyaAdi("file")."<br>";
	echo $u->dosyaTipi("file")."<br>";
	echo $u->dosyaBoyutu("file")." bayt";
}
?>
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Yükle">
</form>

Çıktısı

Kitap.pdf
application/pdf
3890313 bayt

 

Sizin Değerli Görüşlerinize İhtiyacımız Var.