Kategoriler
PHP

PHP ile dosya yükleme (file upload)

Bu yazımızda php ile sunucuya dosya yükleme nasıl yapıldığını anlatacağız. Bir web sitemizde kullanıcıların dosya (video, resim) yüklemesini isteyebiliriz. Kullanıcılar dosya upload ile aygıtındaki (bilgisayar, tablet, cep telefonu) bir dosyayı (resim, video, döküman vb.) siteye aktarabilir. PHP ile post metodunu kullanarak nasıl dosya yüklendiğini aşağıdaki koddan görebilirsiniz;

 

Temel dosya yükleme;

[code]<?php
if($_POST)
{
if($_FILES[“dosya”][“name”])
{
$gecici_dosya = $_FILES[“dosya”][“tmp_name”];
$ozgun_dosya_adi = $_FILES[“dosya”][“name”];
$yukle = is_uploaded_file($gecici_dosya);
if($yukle)
{
$hedef = ‘dosya/’.$ozgun_dosya_adi;
$kaydet = move_uploaded_file($gecici_dosya,$hedef);
if($kaydet)
{
echo(‘<h4 class=”alert_success”>Dosya Yüklendi.</h4>’);
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemedi.</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemiyor.</h4>’);
}
}
else
{
echo(‘Dosya seçmediniz.’);
}
}
else
{

}
?>
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”dosya” />
<input type=”hidden” name=”yukle” />
<input type=”submit” value=”Yükle” />
</form>[/code]

 

Gelişmiş dosya yükleme

[code]<?php
if($_POST)
{
if($_FILES[“dosya”][“name”])
{
$max_dosya_boyutu = 1024000;
$min_dosya_boyutu = 1240;
$yuklenecek_dizin = realpath(“”).”/dosya”;
$dosya_tipleri = array(“IMAGE/PNG”,”IMAGE/JPG”,”IMAGE/JPEG”);
$dosya_uzantilari = array(“PNG”,”JPG”,”JPEG”);
$gecici_dosya = isset($_FILES[“dosya”][“tmp_name”]) ? $_FILES[“dosya”][“tmp_name”] : false;
$ozgun_dosya_adi = isset($_FILES[“dosya”][“name”]) ? $_FILES[“dosya”][“name”] : false;
$dosya_tipi = isset($_FILES[“dosya”][“type”]) ? $_FILES[“dosya”][“type”] : false;
$dosya_boyutu = isset($_FILES[“dosya”][“size”]) ? $_FILES[“dosya”][“size”] : false;
$dosyaexp = explode(“.”,$ozgun_dosya_adi);
$dosya_adi = isset($dosyaexp[0]) ? $dosyaexp[0] : null;
$dosya_uzantisi = end($dosyaexp);
if($dosya_boyutu <= $max_dosya_boyutu && $dosya_boyutu >= $min_dosya_boyutu)
{
if(in_array(strtoupper($dosya_uzantisi),$dosya_uzantilari) && in_array(strtoupper($dosya_tipi),$dosya_tipleri))
{
$yukle = is_uploaded_file($gecici_dosya);
if($yukle)
{
$hedef = $yuklenecek_dizin.”/”.mt_rand(11111111,99999999).’.’.strtolower($dosya_uzantisi);
$kaydet = move_uploaded_file($gecici_dosya,$hedef);
if($kaydet)
{
echo(‘<h4 class=”alert_success”>Dosya Yüklendi.</h4>’);
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemedi.</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemiyor.</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_warning”>Dosya türü testeklemiyor.</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_warning”>Dosya boyutu istenildiği gibi değil.</h4>’);
}
}
else
{
echo(‘Dosya seçmediniz.’);
}
}
else
{
echo(‘Yeni dosya yüklemek için bir dosya seçin.’);
}
?>
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”dosya” />
<input type=”hidden” name=”yukle” />
<input type=”submit” value=”Yükle” />
</form>[/code]

 

Çoklu dosya yükleme;

[code]<?php
if($_POST)
{
if(is_array($_FILES[“dosya”][“name”]))
{
for($i=0;$i<count($_FILES[“dosya”][“name”]);$i++)
{
if($_FILES[“dosya”][“name”][$i])
{
$max_dosya_boyutu = 1024000;
$min_dosya_boyutu = 1240;
$yuklenecek_dizin = realpath(“”).”/dosya”;
$dosya_tipleri = array(“IMAGE/PNG”,”IMAGE/JPG”,”IMAGE/JPEG”);
$dosya_uzantilari = array(“PNG”,”JPG”,”JPEG”);
$gecici_dosya = isset($_FILES[“dosya”][“tmp_name”][$i]) ? $_FILES[“dosya”][“tmp_name”][$i] : false;
$ozgun_dosya_adi = isset($_FILES[“dosya”][“name”][$i]) ? $_FILES[“dosya”][“name”][$i] : false;
$dosya_tipi = isset($_FILES[“dosya”][“type”][$i]) ? $_FILES[“dosya”][“type”][$i] : false;
$dosya_boyutu = isset($_FILES[“dosya”][“size”][$i]) ? $_FILES[“dosya”][“size”][$i] : false;
$dosyaexp = explode(“.”,$ozgun_dosya_adi);
$dosya_adi = isset($dosyaexp[0]) ? $dosyaexp[0] : null;
$dosya_uzantisi = end($dosyaexp);
if($dosya_boyutu <= $max_dosya_boyutu && $dosya_boyutu >= $min_dosya_boyutu)
{
if(in_array(strtoupper($dosya_uzantisi),$dosya_uzantilari) && in_array(strtoupper($dosya_tipi),$dosya_tipleri))
{
$yukle = is_uploaded_file($gecici_dosya);
if($yukle)
{
$hedef = $yuklenecek_dizin.”/”.mt_rand(11111111,99999999).’.’.strtolower($dosya_uzantisi);
$kaydet = move_uploaded_file($gecici_dosya,$hedef);
if($kaydet)
{
echo(‘<h4 class=”alert_success”>Dosya Yüklendi. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemedi. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_error”>Dosya yüklenemiyor. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_warning”>Dosya türü testeklemiyor. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
}
else
{
echo(‘<h4 class=”alert_warning”>Dosya boyutu istenildiği gibi değil. (‘.$_FILES[“dosya”][“name”][$i].’)</h4>’);
}
}
else
{
echo(‘Dosya seçmediniz.’);
}
}
}
else
{
echo(‘Geçersiz array()’);
}
}
else
{
echo(‘Yeni dosya yüklemek için bir dosya seçin.’);
}
?>
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”dosya[]” multiple />
<input type=”hidden” name=”yukle” />
<input type=”submit” value=”Yükle” />
</form>[/code]