PHP ile Gelişmiş Dosya Yükleme

Daha önceki örneğimizde basit dosya yüklemeyi görmüştük. Bu örneğimizde bir resim dosyasının tipini ve boyutunu php ile kontrol edip sonra yüklenmesine izin vereceğiz. Aynı zamanda yüklenen resmin genişliğini de 200px olmasını sağlayacağız. Çözünürlüğün bozulmaması için resmin en-boy oranına dikkat ederek, yüksekliğini 200px'e göre ayarlayacağız. 

İlk önce aşağıdaki dosya2.php dosyasını oluşturunuz. Burada dikkat ederseniz form nesnesinin parametrelerini verirken enctype="multipart/form-data" ifadesini ekledik, dosya yükleme yaparken, form nesnemize bu parametreyi eklemeyi unutmuyoruz. 

dosya2.php içeriği

<html>
<head>
<title>Dosya yükleme</title>
<meta charset="utf-8">
</head>
 
<body>
<form enctype="multipart/form-data" action="dosyayukle2.php" 
method="POST">
 
<table border="1" cellpadding="4" align="center">
<tr>
<td>Yüklenecek Resmi seçiniz:</td>
<td><input type="FILE" name="RESIM"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Yukle"></td>
</tr>
</table>
</form>
</body>
</html>

Yüklenecek resmin jpg, gif, png formatlarında olmasını istiyoruz, bu formatların dışında ise örneğin pdf ise resmin yüklenmesine izin vermiyoruz. $gecerli_formatlar = array("jpg","jpeg","png","gif"); satırı ile istediğimiz dosya formatlatlarını giriyoruz.Dosya adını ve dosya boyutunu aşağıdaki iki parametre ile belirliyoruz.


$dosyaadi = $_FILES['RESIM']['name'];
$boyutu = $_FILES['RESIM']['size'];
 
if($boyutu<(2048*2048)) satırı ile 4096 KB yani 4MB'dan büyük resimlerin yüklenmesine izin vermiyoruz. Daha önce gördüğümüz move_uploaded_file fonksiyonu ile resmimizin hem ismini hem de yolunu değiştiriyoruz. Aşağıdaki iki satır ile resmin yeni boyutlarını tanımlıyoruz.

$resimorani = $boy / $boyutlar[0]; 
$yeniyukseklik = $resimorani*$boyutlar[1]; 
 

dosyayukle2.php içeriği

<?php
$boy=200;
$yol = "yuklenendosyalar/";
 
if (strlen($_FILES['RESIM']['name']))
 {
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{
$gecerli_formatlar = array("jpg","jpeg","png","gif");
$yeni_adi= array("");
 
$dosyaadi = $_FILES['RESIM']['name'];
$boyutu = $_FILES['RESIM']['size'];
echo "<p>" ;
 
if(strlen($dosyaadi))
{
list($txt, $uzanti) = explode(".", $dosyaadi);
$uzanti= strtolower($uzanti);
if(in_array($uzanti,$gecerli_formatlar))
{
if($boyutu<(2048*2048))
{
$yeni_adi = "Yuklenen_".str_replace(" ", "_", $txt).".".$uzanti;
$gecici = $_FILES['RESIM']['tmp_name'];
 
if(move_uploaded_file($gecici, $yol.$yeni_adi))
{
$dosya = $yol.$yeni_adi;
echo $dosya;
if ($uzanti=="jpg"  || $uzanti=="jpeg" )
$resim = imagecreatefromjpeg($dosya);
 
if ($uzanti=="png")
$resim = imagecreatefrompng($dosya); 
 
if ($uzanti=="gif" )
$resim = imagecreatefromgif($dosya); 
 
$boyutlar = getimagesize($dosya);
 
$resimorani = $boy / $boyutlar[0];
$yeniyukseklik = $resimorani*$boyutlar[1];
 
$yeniresim = imagecreatetruecolor($boy, $yeniyukseklik);
 
if ($uzanti=="png" || $uzanti=="gif")
{
imagecolortransparent($yeniresim, imagecolorallocatealpha($yeniresim, 0, 0, 0, 127));
imagealphablending($yeniresim, false);
imagesavealpha($yeniresim, true);
}
 
imagecopyresampled($yeniresim, $resim, 0, 0, 0, 0, $boy, $yeniyukseklik, $boyutlar[0], $boyutlar[1]);
$hedefdosya=$yol.$yeni_adi;
 
switch($uzanti) {
case "gif":
imagegif($yeniresim,$hedefdosya); 
break;
case "jpeg":
case "jpg":
imagejpeg($yeniresim,$hedefdosya,100); 
break;
case "png":
case "x-png":
imagepng($yeniresim,$hedefdosya);
break;
 
chmod ($hedefdosya, 0755);
$resimsonuc.= "<center><img src='yuklenendosyalar/".$yeniresim."'  class='preview'></center> ";
} //switch
}
} else echo "Fotoğraf boyutu maks 4 MB olabilir, resminiz çok büyük...";
}else echo "Geçersiz dosya formati, JPG veya PNG formatında olmalıdır.";
} else echo "Resim veya fotoğraf seçiniz..!";
 
 
}//post
}//dosya adı
 ?>


Mutlu kodlamalar,
Oğuzhan TAŞ
Aralık 2014

Bookmark and Share