Hanifi Söylemez

Php ile Resim Yükleme

Php ile Resim Yükleme

  • 28 Aralık 2017
  • 0 YORUM

Bu seefferr ki konumuz, php ile resim yükleme.

Yeni başlayan arkadaşlar için yararlı olacak, sıklıkla resim yükleme vs gibi sistem içerisinde olan kişiler için işinizi kolaylaştıracak bir class/sınıfdır. Çok uzatmadan, detaylandıracak olursak ;

Önceliğimiz, class.upload.php sınıfı. (Rar içerisinde yer alıyor) Kısaca bahsedecek olursak bu class ile resimlerimizi rahatlıkla yükleyebiliyoruz.. Detaylı bilgi şurada yer almaktadır. Class ın özelliklerini vesayre buradan görebilirsiniz. Biz aslında mevcut bir class varken üstüne ek bir class oluşturduk ki "sürekli aynı şeyleri yazmayalım diye.." Kullanıma geçelim ;

1 - class.upload.php dosyasını resim yükleyeceğimiz dosyanın başına entegre ediyoruz.

require_once("class.upload.php"); // varsa klasör yolunu belirtmeyi unutmayın
2 - HTML formumuzu oluşturalım.

<form method="POST" action="#" enctype="multipart/form-data">
   <input type="file" name="resim" />
   <input type="submit" val="Yükle" />
</form>

3 - Yeni oluşturduğumuz classı istediğiniz yere taktim edebilirsiniz (diler include.php gibi dinamik bir dosyanın içine dilerseniz sadece dosya yükleyeceğiniz yere)

class resimUpload {
	public $filePic = "";
	public $oldImg = "";
	
	public $thumb = false;
	public $thumb_size = "";
	
	public $path = "";
	public $image_size = "";
	
	public $dosyaAdi = "";
	
	function yukle()
	{
		$main_host				=		"http://$_SERVER[HTTP_HOST]/";
		$hashControl				=		strstr($this->path, "/");
		
		if( $hashControl )
		{
			$newPath				=		explode("/", $this->path);
			if( !empty($newPath[2]) )
			{
				$processPath		=		$main_host.$newPath[0]."/".$newPath[1]."/".$newPath[2]."/";
				$path				=		$newPath[0]."/".$newPath[1]."/".$newPath[2]."/";
			} else {
				$processPath		=		$main_host.$newPath[0]."/".$newPath[1]."/";
				$path				=		$newPath[0]."/".$newPath[1]."/";
			}
		} else {
			$processPath			=		$this->path;
			$path					=		$this->path;
		}
		
		if(!empty($this->oldImg))
		{
			@unlink($processPath . $this->oldImg);
			@unlink($processPath . "/thumbs/" . $this->oldImg);
		}
		
		if( !empty($this->image_size) )
		{
			$new_size	=	explode(",", $this->image_size);
			$x				=	$new_size[0]; // Width
			$y				=	$new_size[1]; // Height
		}
		
		$upload = new Upload($this->filePic);
		if ($upload->uploaded) {
			$filename = md5(microtime());
			
			$uzanti = pathinfo($this->filePic["name"]);
			$uzanti = $uzanti["extension"];
			
			$upload->image_resize = true;
			$upload->image_ratio_crop = true;
			$upload->image_x = $x;					
			$upload->image_y = $y;
			
			$upload->file_new_name_body	=	$filename;
			$upload->Process($processPath);
			
			switch( $uzanti ) {
				case "png": $ctype="image/png"; break;
				case "jpeg": $ctype="image/jpeg"; break;
				case "jpg": $ctype="image/jpeg"; break;
				default: { $upload->image_convert = png; $ctype="image/png"; } break;
			}
		}
		
		if( $this->thumb == true ) {
			if( !empty($this->thumb_size) )
			{
				$newsize	=	explode(",", $this->thumb_size);
				$x				=	$newsize[0]; // Width
				$y				=	$newsize[1]; // Height
			}
			
			$upload = new Upload($this->filePic);
			if ($upload->uploaded) {
				$uzanti = pathinfo($this->filePic["name"]);
				$uzanti = $uzanti["extension"];
				
				$upload->image_resize = true;
				$upload->image_ratio_crop = true;
				$upload->image_x = $x;					
				$upload->image_y = $y;
				
				$upload->file_new_name_body	=	$filename;
				$upload->Process($processPath . "/thumbs/");
				
				switch( $uzanti ) {
					case "png": $ctype="image/png"; break;
					case "jpeg": $ctype="image/jpeg"; break;
					case "jpg": $ctype="image/jpeg"; break;
					default: { $upload->image_convert = png; $ctype="image/png"; } break;
				}
			}
		}
		
		$this->dosyaAdi = $filename.".".$uzanti;
	}
}

4  - Dosyamızı yüklemek için gerekli kodları ekleyelim ;

if( isset($_FILES["resim"]) ) // buraya ben şimdilik eğer ki gönder tuşuna basıldığında bir dosya seçildiyse diye belirttim ki sürekli işlem yapmasın
{
	$resim = new resimUpload();
	$resim->filePic  = $_FILES["resim"]; // inputten gelen veri
	// $resim->oldImg  = veritabanındanGelenResminIsmi; // bu satır aktif edilirse belirlenmiş yol üzerinden belirlenmiş isimi hedefleyerek resimi/dosyayı siler
	// $resim->thumb  = true; // bu satır aktif edilirse, thumb (orjinal resimin küçük hali 'seo dostu') resmini oluşturur
	// $resim->thumb_size  = "100,100"; // thumb değeri aktif edildiyse bu satıra virgün ile ayırarak x-y boyutları belirtilmelidir.
	// thumb aktif edilirse yükleyeceğiniz klasörün içinde "thumbs" adlı klasör olmalıdır. örneğin,
	// path kısmını "resimler" olarak belirttim o zaman "resimler" klasörü içinde "thumbs" diye klasörüm olmalı.
	$resim->path  = "resimler"; // burada resmin yüklenecek klasör yolu verilmelidir. Ben "resimler" dedim, ana dizinde "resimler" klasörüme yüklenecek
	// maksimum 3 yol verilmelidir örnek olarak ;
	// resimler  - uygun
	// resimler/urunler  - uygun
	// resimler/urunler/elmalar - uygun
	// resimler/urunler/elmalar/baskaklasor - bu yanlıştır çünkü 4 klasör oldu.
	$resim->image_size  = "300,300"; // buraya veri girilise (virgül ile - x/y olarak) resimin yüklenecek max boyutunu belirtirsiniz
	// eğer ki bu satır girilmezse resmin boyutu ney ise direk onu aktarır. Ben x = 300px, y = 300px piksellerinde istiyorum eğer
	// yüklenen resim bu boyuttan fazla ise otomatikmen 300x300 boyutuna sığdırılacaktır.
	$resim->yukle();

	echo "Dosya Adı : " . $resim->dosyaAdi . "
"; // veritabanına resim adını göndermek için
	// Resim çıktısı olarakta manuel olarak yolu belirleyip, veritabanından dosyanın ismini almamız yeterlidir.
	echo "Yüklenmiş Resim ; 
  
";
	echo "Var ise Thumbs ; 
  
"; // thumbs değeri kapalıysa bu satırda resim gözükmeyebilir
}

İşlem sadece bu kadar... (Birde bunun hazır dosyaları varsa tadından yenmez diyenler için)

> Örnek Projeyi İndirmek için


YORUM YAP