Bu dersimizde post metoduyla formdan dosya upload etmeyi ele alacağız. Dosya upload etmek için kullanacağımız bir başka süper global değişkenimiz olan $_FILES değişkenimizi kullanacağız. Dosya yüklemek için öncelikle bir form oluşturuyoruz. Formumuzun method kısmına POST özelliği veriyoruz. Aynı dosya üzerinde resim upload edeceğimiz için action kısmını boş bırakoyoruz ve forma enctype=”multipart/form-data” etiketini ekliyoruz. Ardından type özelliği “file” olan ve name özelliği “dosya” olan bir input ve bir de gönder butonu ekliyoruz:
1 2 3 4 |
<form method="post" action="" enctype="multipart/form-data"> <input type="file" name="dosya"/> <input type="submit" value="Yükle" /> </form> |
Yukarıdaki gibi HTML ile formumuzu oluşturduysak, gelelim asıl mesele olan dosya yükleme meselesine. Buradan sonraki kısmı PHP ile yapıyoruz.
Şimdi $_FILES süper global değişken içerisinde hangi bilgileri elde edebileceğimize bir gözatalım:
$_FILES['dosya']['name'] : Dosyanın bilgisayardaki adını döndürür.
$_FILES['dosya']['type'] : Dosya mim tiplerini döndürür.
$_FILES['dosya']['size'] : Dosyanın byte cinsinden değerini döndürür.
$_FILES['dosya']['tmp_name'] : Yüklenen dosyanın sunucuda arabellekteki adı ve konumudur.
$_FILES['dosya']['error'] : Yükleme sırasında hata oluşursa, oluşan hatanın kodunu döndürür.
Şimdi dosyamızı nasıl yükleyeceğimize bakalım:
Dosyanın yüklenmesi ara bellekten kalıcı belleğe yüklenmesi için move_uploaded_file(); fonksiyonunu kullanacağız. Bu fonksiyon iki adet parametre alır ve true ya da false olmak üzere iki ayrı sonuç döndürür.
Birinci parametresi dosyanın arabellekteki diziniyle birlikte dosya adı , ikinci parametresi ise dosyanın kalıcı olarak saklanacağı dizinle birlikte dosya adıdır.
Şimdi kodlarımızı yazalım;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php if($_FILES['dosya']){ // Eğer yüklenecek dosya varsa if($_FILES['dosya']['error'] == 0){ // Eğer dosyayı ara belleğe almada hata yok ise $yukle = '../ders/'.$_FILES['dosya']['name']; // Dizini ve dosya adını birleştirip yükle değişkenine atıyoruz if(move_uploaded_file($_FILES['dosya']['tmp_name'], basename($yukle))){ // Eğer arabellekteki dosya istediğimiz dizine yüklendiyse echo "dosya başarıyla yüklendi"; // Kullanıcıya dosyanın başarıyla yüklendiğini söyle. }else{ echo "Dosya yüklenirken bir hata ile karşılaşıldı."; // Dosya ara bellekten kalıcı belleğe yüklenirken hata verdiyse } }else{ echo "Dosya yüklenirken bir hata ile karşılaşıldı."; // Dosya arabelleğe alınırken hata verdiyse } } ?> |
$_FILES['dosya']['name'] kodu ile dosya adını ve uzantısını aldığımıza göre artık bu dosyanın uzantısını kontrol ederek yüklemeye izin verebiliriz. Bunun için phpinfo() fonksiyonunu kullanabiliriz.
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php /* * Önce dosya bilgisini phpinfo() fonksiyonuna gönderelim * ve sonuçları $ext dizisine aktaralım */ $ext = pathinfo($_FILE['dosya']['name']); /* * atdından $ext dizisinin extension indisini alıp $uzanti değişkenine aktaralım */ $uzanti = $ext['extension']; if($uzanti == "zip"){ // Eğer $uzanti değişkenimizin deperi "zip" ise echo "Dosya kabul edildi"; }else{ // $uzanti değişkenimizin değeri "zip" değilse echo "Yalnızca zip uzantılı dosyalar kabul edilebilir"; } ?> |
Görüldüğü gibi dosyamızın uzantı bilgisini aldık. Şimdi yükleme aşamasında nasıl kullanacağımızı bakalım.
Kodlarımız aşağıdaki gibi olacak;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php if($_FILES['dosya']){ // Eğer yüklenecek dosya varsa $ext = pathinfo($_FILE['dosya']['name']); // Dosya bilgilerini al $uzanti = $ext['extension']; // uzantıyı $uzanti değişkenine aktar if($uzanti == "zip"){ // Eğer $uzanti değişkenimizin deperi "zip" ise if($_FILES['dosya']['error'] == 0){ // Eğer dosyayı ara belleğe almada hata yok ise $yukle = '../ders/'.$_FILES['dosya']['name']; // Dizini ve dosya adını birleştirip yükle değişkenine atıyoruz if(move_uploaded_file($_FILES['dosya']['tmp_name'], basename($yukle))){ // Eğer arabellekteki dosya istediğimiz dizine yüklendiyse echo "dosya başarıyla yüklendi"; // Kullanıcıya dosyanın başarıyla yüklendiğini söyle. }else{ echo "Dosya yüklenirken bir hata ile karşılaşıldı."; // Dosya ara bellekten kalıcı belleğe yüklenirken hata verdiyse } }else{ echo "Dosya yüklenirken bir hata ile karşılaşıldı."; // Dosya arabelleğe alınırken hata verdiyse } }else{ echo "Yalnızca zip uzantılı dosyalar kabul edilebilir"; } } ?> |