%100 tüm testlerimi yapmadım ama bayram tatilinde boş durmayıp upload fonksiyon kütüphanemi bitireyim dedim,
Kullanım Örneği;
<?php
include('upload.class.php');
$a = new upload;
/*Zorunlu değil boş bırakırsak root dizine atar*/
$a->directory = 'D:\wamp\www'.DIRECTORY_SEPARATOR;
/*Girmek zorunlu değil girmek gerede 250K,2M,1G vb, parametreler ile girilmelidir*/
$a->allowed_size = '2G';
/*Girmek zorunlu değil Dosya uzantısı kontrolü yapar girmek gerekirse array('uzantı') şeklinde */
$a->allowed_ext = array('jpg','gif','png');
/*Girmek zorunlu değil Dosya uzantısına aldırmaksınızın eğer resimli işlemler yapıyor isek resim oldugunu belirmekte fayda var*/
$a->check_image_type = true;
/*Girmek zorunlu değil Dosyaya yeni ad vermek iser isek not uzantıyı yazmıor sadece adı değiştiriyor*/
$a->file_rename = uniqid();
/*girmek zorunlu hangi file formdan geldiğini belirmemiz gerekiyor. multi upload fonksiyonunu kapattım*/
$file = $a->save('ahmet');
/*hata çıktıları*/
if($file){
print_r($file);
}else{
print_r($a->error);
}
?>
upload.class.php
<?php
/*
@author mehmetmutlu.com.tr
@16 Kasım 2010, Salı
*/
class upload{
public $directory = NULL;
public $allowed_size = NULL;
public $allowed_ext = NULL;
public $check_image_type = false;
public $file_rename = NULL;
public $error = NULL;
public $renadme = NULL;
public function save($file=NULL){
if(!$this->check_directory()){
die('Upload dizini yok yada yazma izini geçersiz.');
}
if($file==NULL){
die('class save(\'\') file değeri geçersiz');
}else{
if($_FILES[$file]['error']==0 && $_FILES[$file]['size']!=0){
if(!$this->check_allowed_ext($_FILES[$file])){
$this->error[] = array(1,'Geçersiz dosya uzantısı.');
}elseif(!$this->check_allowed_size($_FILES[$file])){
$this->error[] = array(2,'Upload limit aşımı. Maksimum upload boyutu '.$this->allowed_size);
}elseif(!$this->check_image($_FILES[$file])){
$this->error[] = array(3,'Geçersiz resim dosyası');
}else{
if(move_uploaded_file($_FILES[$file]['tmp_name'], $this->directory . $this->path($_FILES[$file]))){
return array('file'=>$this->path($_FILES[$file]),'ext'=>pathinfo(basename($_FILES[$file]['name']),PATHINFO_EXTENSION),'size'=>$_FILES[$file]['size']);
}else{
$this->error[] = array(0,'Upload sırasında hata oluştu');
return false;
}
}
}else{
$this->error[] = array(0,'Upload sırasında hata oluştu');
return false;
}
}
}
private function path($file){
if($this->file_rename==NULL){
return basename($file['name']);
}else{
return $this->file_rename.'.'.pathinfo(basename($file['name']),PATHINFO_EXTENSION);
}
}
private function check_directory(){
if(is_dir(realpath($this->directory)) || is_writable(realpath($this->directory))){
return true;
}
return false;
}
private function check_allowed_size($file){
if($this->allowed_size!=NULL){
if(!preg_match('#[0-9]++[GMKB]#',$this->allowed_size)){
return false;
}
switch(substr($this->allowed_size,-1)){
case 'G': $size = intval($this->allowed_size) * pow(1024,3); break;
case 'M': $size = intval($this->allowed_size) * pow(1024,2); break;
case 'K': $size = intval($this->allowed_size) * pow(1024,1); break;
default : $size = intval($this->allowed_size); break;
}
return ($file['size'] <= $size);
}else{
return true;
}
}
private function check_allowed_ext($file){
if($this->allowed_ext!=NULL){
if (in_array(pathinfo($file['name'],PATHINFO_EXTENSION),$this->allowed_ext)){
return true;
}else{
return false;
}
}else{
return true;
}
}
private function check_image($file){
if($this->check_image_type==false){
return true;
}else{
if(!getimagesize($file['tmp_name'])) {
return false;
}else{
return true;
}
}
}
}
?>
not: class içerisinde bazı fonsiyonları Yusuf Koç‘un upload classın dan alıntı yapılmıştır…