Yenilikleri, isteklerinizin aşamalarını görebilirsiniz.
Arkadaşlar tabi ki konularınızı; başlık, açıklama ve düzenli bir kod dökümanı halinde ilettiğiniz takdirde paylaşırız. Bunun için info@phpmutfagi.com mail adresine yazmanız yeterlidir. Sadece tek şartımız herkesin anlayacağı bir dilde anlatmanız (Konularınızı iletirken lütfen imzanızı da gönderin. İsim soyisim, varsa linkedin veya başka bir sosyal medya hesabınız).
31-12-2022
Php derslerinde, php hazır kodlarda, php hatalarda ve ya tüm konularda hızlıca arama yaparak aradığınıza hızlıca ulaşabilirsiniz.
Yayın Tarihi
Arkadaşlar tabi ki konularınızı; başlık, açıklama ve düzenli bir kod dökümanı halinde ilettiğiniz takdirde paylaşırız. Bunun için info@phpmutfagi.com mail adresine yazmanız yeterlidir. Sadece tek şartımız herkesin anlayacağı bir dilde anlatmanızdır.
Konularınızı iletirken lütfen imzanızı da gönderin. (İsim soyisim, varsa linkedin veya başka bir sosyal medya hesabınız)
Php ile dosya yüklemek $_FILES
methodu ile gerçekleşir ve resim yüklemek ile tamamen aynıdır. Sadece dosya türünü belirtmemiz gerekmektedir.
Post yöntemi ile normal bir html form kullanarak dosyayı gönderip ve kontrol sağlayıp yükleme işlemini gerçekleştireceğiz.
Form'a bir dosya post edeceğimizi belirtmek zorundayız. Form tagına "enctype" methoduna "multipart/form-data" parametresini ekleyeceğiz. Bu sayede form bizim dosya göndereceğimizi anlayacak.
$_FILES
methodu ile gönderilen dosyanın türünü, boyutunu, adını vb. bilgileri öğrenebiliriz. Bunları sağlayan yan methodları aşağıdaki gibidir.
Adı | Kullanımı | Görevi |
---|---|---|
name | $_FILES["input_name"]["name"] |
Gönderilen dosyanın adı |
tmp_name | $_FILES["input_name"]["tmp_name"] |
Gönderilen dosyanın geçici olarak sunucuda barındığı yol |
size | $_FILES["input_name"]["size"] |
Gönderilen dosyanın boyutu (bayt cinsinden) |
type | $_FILES["input_name"]["type"] |
Gönderilen dosyanın tipi(jpg, png, xls, vb.) |
error | $_FILES["input_name"]["error"] |
Dosya gönderilirken gerçekleşen hata ve hata kodu |
Aşağıda basit bir html form sayfası hazırladık. form.php sayfası olarak kayıt ettik ve yukle.php adresine post ettik.
<
><html>
<head>
<title>Form Sayfası | Dosya Yükleme</title>
</head>
<body>
<form action="yukle.php" method="post" enctype="multipart/form-data">
<input type="file" name="dosya" />
<button type="submit">YÜKLE</button>
</form>
</body>
</html>
Şimdide size yukle.php sayfasındaki $_FILES methodunun çalışma mantığını gösterelim.
<?php
if (isset($_FILES['dosya'])) {
//Eğer form tagına enctype="multipart/form-data" bunu eklemeseydik if e girmez direk elseye giderdi.
echo 'Dosya gönderilmiştir. <br />';
var_dump($_FILES['dosya']);
/* Dosya seçilerek gönderildiğinde EKRAN ÇIKTISI:
Dosya gönderilmiştir.
array (size=5)
'name' => string 'test.xlsx' (length=9)
'type' => string 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' (length=65)
'tmp_name' => string 'C:\wamp64\tmp\phpA04F.tmp' (length=25)
'error' => int 0
'size' => int 6604
************************
Dosya seçilmeden gönderildiğinde EKRAN ÇIKTISI:
Dosya gönderilmiştir.
C:\wamp64\www\test\yukle.php:5:
array (size=5)
'name' => string '' (length=0)
'type' => string '' (length=0)
'tmp_name' => string '' (length=0)
'error' => int 4
'size' => int 0
## Gene ekran çıktısı verir ancak boş değerler döner.
*/
} else
echo 'Dosya gönderilmemiştir. Lütfen dosya seçiniz.';
?>
<
><html>
<head>
<title>Form Sayfası | Dosya Yükleme</title>
</head>
<body>
<form action="yukle.php" method="post" enctype="multipart/form-data">
<input type="file" name="dosya" />
<button type="submit">YÜKLE</button>
</form>
</body>
</html>
<?php
if (isset($_FILES['dosya'])) {
$hata = $_FILES['dosya']['error']; //dosya inputundan gönderilen hatayı aldık.
if ($hata != 0) { // hata kontrolü gerçekleştirdik.
echo 'Dosya gönderilirken bir hata gerçekleşti.';
} else {
$dosyaBoyutu = $_FILES['dosya']['size']; // dosya boyutunu öğrendik
if ($dosyaBoyutu > (1024 * 1024 * 2)) {
//buradaki işlem aslında bayt, kilobayt ve mb formülüdür.
//2 rakamını mb olarak görün ve kaç yaparsanız o mb anlamına gelir.
//Örn: (1024 * 1024 * 3) => 3MB / (1024 * 1024 * 4) => 4MB
echo 'Dosya 2MB den büyük olamaz.';
} else {
$dosyaAdi = $_FILES['dosya']['name']; //resmin adını öğrendik.
$uzantisi = explode('.', $dosyaAdi); // uzantısını öğrenmek için . işaretinden parçaladık.
$uzantisi = $uzantisi[count($uzantisi) - 1]; // ve daha sonra 1 den fazla nokta olma ihtimaline karşı en son noktadan sonrasını al dedik.
$yeni_adi = "upload/" . time() . "." . $uzantisi; // dosyaya yeni isim vereceğimiz için zamana göre yeni bir isim oluşturduk ve yüklemesi gerektiği yeride belirttik.
//yuklenecek_yer/dosya_adi.uzantisi.
if (move_uploaded_file($_FILES["dosya"]["tmp_name"], $yeni_adi)) {
//tmp_name ile dosyayı bulduk ve $yeni_adi değişkeninin değerine göre yükleme işlemini gerçekleştirdik.
echo "Dosya başarılı bir şekilde yüklendi.";
} else echo 'Dosya yüklenirken bir hata oluştu.';
}
}
}
?>