Bu yazımda size PHP ile dosya yüklemeyi anlatacağım.
Geçen yazımda bir form oluşturmuştuk. Daha sonra bir dosya gönderip $_FILES ile dosya bilgilerini almıştık. Şimdi gönderilen formu kontrol edelim. Yani dosya gönderildiyse işleme devam edecek, gönderilmediyse uyarı mesajı verecek.
if($_FILES['dosya']['error'] == 4){
echo 'Lütfen dosyayı seçiniz...';
}else{
echo '<pre>';
print_r($_FILES);
echo '</pre>';
}
Eğer dosya yüklemeden butona basarsak şu uyarıyı alırız:
Lütfen dosyayı seçiniz…
Dosyanın Yüklendiğini Konrol Etme
Eğer yüklenilen dosyanın düzgün yüklenip yüklenmediğini kontrol etmek istiyorsak bunun için is_uploaded_file() metodu kullanılır.
if($_FILES['dosya']['error'] == 4){
echo 'Lütfen dosyayı seçiniz...';
}else{
if(is_uploaded_file($_FILES['dosya']['tmp_name'])){
echo '<pre>';
print_r($_FILES);
echo '</pre>';
}else{
echo 'dosya yüklenirken bir hata oluştu...';
}
}
Eğer dosya düzgün yüklenmezse şu uyarı döndürülecek:
dosya yüklenirken bir hata oluştu…
Dosya Türünü Sınırlama
Örneğin; formunuz belli formatları desteklemesini istiyorsunuz. Sadece resim yüklensin veya sadece text dosyası yüklensin gibi.
if($_FILES['dosya']['error'] == 4){
echo 'Lütfen dosyayı seçiniz...';
}else{
if(is_uploaded_file($_FILES['dosya']['tmp_name'])){
$gecerli_dosya_uzantilari = [
'image/jpeg',
'image/png',
'image/gif'
];
$dosya_uzantisi = $_FILES['dosya']['type'];
if(in_array($dosya_uzantisi,$gecerli_dosya_uzantilari)){
echo '<pre>';
print_r($_FILES);
echo '</pre>';
}else{
echo 'bu dosya türü desteklenmiyor';
};
}else{
echo 'dosya yüklenirken bir hata oluştu...';
};
};
Yukarıdaki örneği incelerseniz bu forma şu üç uzantı tipinde dosya yükleyebildiğinizi görürsünüz:
- image/jpeg
- image/png
- image/gif
Dosya Boyutunu Sınırlama
Eğer dosya boyutunu sınırlamak istersek kodları şu şekilde yazıyoruz.
if($_FILES['dosya']['error'] == 4){
echo 'Lütfen dosyayı seçiniz...';
}else{
if(is_uploaded_file($_FILES['dosya']['tmp_name'])){
$gecerli_dosya_uzantilari = [
'image/jpeg',
'image/png',
'image/gif'
];
$dosya_uzantisi = $_FILES['dosya']['type'];
$gecerli_dosya_boyutu = (1024*1024*3);
if(in_array($dosya_uzantisi,$gecerli_dosya_uzantilari)){
if($gecerli_dosya_boyutu <= $_FILES['dosya']['size']){
echo '<pre>';
print_r($_FILES);
echo '</pre>';
}else{
echo 'dosya boyutunu aşıyorsunuz.';
}
}else{
echo 'bu dosya türü desteklenmiyor';
};
}else{
echo 'dosya yüklenirken bir hata oluştu...';
};
};
Yüklenilen Resimi Bir Dosyaya Yollamak
Bir resimi veya başka uzantılı bir belgeyi upload ettikten sonra bir klasöre taşımak istiyorsak bunun için move_uploaded_file() metodu kullanılır.
<?php
if($_FILES['dosya']['error'] == 4){
echo 'Lütfen dosyayı seçiniz...';
}else{
if(is_uploaded_file($_FILES['dosya']['tmp_name'])){
$gecerli_dosya_uzantilari = [
'image/jpeg',
'image/png',
'image/gif'
];
$dosya_uzantisi = $_FILES['dosya']['type'];
$gecerli_dosya_boyutu = (1024*1024*3);
$yukle = move_uploaded_file($_FILES['dosya']['tmp_name'], $_FILES['dosya']['name']);
if(in_array($dosya_uzantisi,$gecerli_dosya_uzantilari)){
if($gecerli_dosya_boyutu >= $_FILES['dosya']['size']){
if($yukle){
echo '<h3>Dosya başarıyla yüklendi.../h3>';
echo '<img src='. $_FILES['dosya']['name'].'></img>';
}else{
echo 'bir sorun oluştu. Dosya yüklenemedi...';
}
}else{
echo 'dosya boyutunu aşıyorsunuz.';
}
}else{
echo 'bu dosya türü desteklenmiyor';
};
}else{
echo 'dosya yüklenirken bir hata oluştu...';
};
};
?>
Yukarıdaki örnekte; resim belgesi düzgün olarak taşındıysa resimi gösteriyor, herhangi bir sorundan dolayı yüklenmediyse hata mesajı veriyor.
EK: copy()
Eğer sadece dosya yükleyeyim devamı önemli değil diyorsanız copy() metodunu kullanabilirsiniz.
copy($_FILES['dosya']['tmp_name'], '/' . $_FILES['dosya']['name'])