"Enter"a basıp içeriğe geçin

Php ile Dosya Yükleme / Upload İşlemleri

Merhaba arkadaşlar php ile dosya yükleme ve upload işlemleri ile ilgili bir çalışma hazırladım. İlerleyen günlerde sizlerle çoklu dosya/resim yükleme ile ilgili de anlatım yapacağım.

Dosya/Resim yükleme işlemlerimiz oldukça basit örnek olarak hazırladığımız dosyamızda sadece image yani resim yüklemeniz için izin veriyor. Bunların dışında word excel pdf v.b dosya yükleme işlemleri için aşağıdaki aşağıdaki formatları kullanabilirsiniz.

$dosyaformati = array("application/pdf", "application/doc", "application/docx", "application/xls", "application/xlsx"); // Yüklenmesine izin verilecek dosya formatlarını seçiyoruz

Dosya yükleme için form sayfamız,

<?php
  if ($_FILES){
    include 'upload.php';
  }
?>
<!doctype html>
<html lang="tr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <title>Php ile Resim Yükleme, Upload İşlemleri - BS Web Tools</title>
  </head>
  <body>
  	<div class="container">
  		<div class="row">
  			<div class="col-12"><h1>Php ile Resim Yükleme, Upload İşlemleri</h1></div>
        <div class="col-12"><?php echo $sonuc; ?></div>
  			<div class="col-12">
  				<form action="index.php" method="post" enctype="multipart/form-data">
  					<div class="form-group">
  						<label>Dosya Seçiniz</label>
  						<input type="file" name="dosya" class="form-control-file" required />
  					</div>
  					<div class="form-group">
  						<button type="submit" class="btn btn-primary">Yükle</button>
  					</div>
  				</form>
  			</div>
  		</div>
  	</div>
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
  </body>
</html>

Upload işlemlerinin yapılacağı dosyamız,

<?php
	// Gönderilen dosya adınındaki türkçe karakter ve boşlukları dönüştürücü fonksiyonumuz
	function dosyaadi($degisken){
		$bul	= array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', 'Ö', 'İ', 'Ü', '-');
		$degistir = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', 'o', 'i', 'u', ' ');
		$sonuc = strtolower(str_replace($bul, $degistir, $degisken));
		$sonuc = str_replace(' ', '-', $sonuc);
		return $sonuc;
	}

	$klasor = 'upload'; // Dosyanın yükleneceği klasör

    $dosya = $_FILES['dosya']; // Gönderilen dosyanın bilgilerini değişkene aktarıyoruz

    $gelenformat = $dosya['type']; // Gelen dosyanın formatını tanımlıyoruz.

    $dosya_tmp = $dosya['tmp_name']; // Gelen dosyanın tmp adını tanımlıyoruz.

	$dosyaformati = array("image/pjpeg", "image/jpeg", "image/gif", "image/bmp", "image/x-png", "image/png"); // Yüklenmesine izin verilecek dosya formatlarını seçiyoruz

	$urldecode = urldecode($dosya['name']); // Gönderilen dosya adına urldecode fonksiyonu uygulanıyor.

	$dosya = explode('/', $urldecode);

	$zaman = time(); // Dosya isimlerinin karışmaması için random değer üretmek adına time fonksiyonunu kullanıyoruz.

	if (in_array($gelenformat, $dosyaformati)) { // Php in_array fonksiyonu ile gelen dosya formatının izin verilen formatlara uygun olup olmadığını kontrol ediyoruz.

		$yuklenendosya = $klasor . '/' . $zaman . dosyaadi($dosya[count($dosya) - 1]); // Göndeirlen dosyayı yukarıda tanımladığımız dosyaadi() fonksiyonundan geçiriyoruz. Ve dosya yolu ile beraber değişkene atıyoruz.

		move_uploaded_file($dosya_tmp, $yuklenendosya); // Yüklenen dosyayı tmp dizininden olması gereken dizine taşıyoruz.

		$yuklenendosyaadi = $zaman . dosyaadi($dosya[count($dosya) - 1]); // Yüklenen dosya adını ekrana yazdırmak veya veri tabanına yazdırmak için değişkene atıyoruz.

		if ($yuklenendosyaadi) {

			// If döngüsü ile yüklenen dosya adının dolu olup olmadığını kontrol ediyoruz.
			
			$sonuc = '<div class="alert alert-success">Yükleme başarılı!</div>';
			
			$sonuc .= '<img src="upload/'.$yuklenendosyaadi.'" class="img-responsive img-thumbnail" />';
		
		}

	}else{

		$sonuc = '<div class="alert alert-danger">Yüklemek istediğiniz dosya formatı uygun değil.</div>'; // Eğer izin verilmeyen bir formatta yüklenmeye çalışırsa hata mesajı döndürüyoruz.

	}
?>

Dosyalar da yorum satırları ile de sizlere açıklamalar ekleyerek detaylı olarak anlatmaya çalıştım.

* Sunucu üzerinde yükleme yaptığınız klasörün yazma izinlerini 707 olarak değiştirmeyi unutmayınız.

Umarım sizler için yardımcı olabilmişimdir.

Örnek kodları indirmek ve Demo için

Demo | GitHub

Bu yazı yorumlara kapalı.