آموزش آپلود فایل در php

daskhatmin فواد طهماسبی
1,011 بازدید
آپلود فایل در php

امروزه آپلود فایل یکی از امکانات اصلی وبسایتها به حساب می آید. گالری تصاویر، فایل ایمیل شده، ویدئوی آنلاین و … همه به خاطر وجود امکان آپلود فایل از طریق مرورگر کاربرها است که تا این حد گسترش پیدا کرده است.

در این آموزش قصد داریم به این ویژگی مهم در زبان PHP بپردازیم و ببینیم که چطور میتونیم در php فایلها رو آپلود کنیم.

 

پیشنیاز

آپلود فایل در php کار پیچیده ای نیست، ولی چند مورد هست که باید به آنها توجه کنید. در غیر این صورت احتمالا با مشکل مواجه میشوید.

اول از همه باید مطمئن بشید که تنظیمات آپلود فایل در php فعال است. برای اینکار فایل php.ini رو بررسی کنید تا مولفه file_uploads برابر on باشد.

file_uploads = On

 

ساخت فرم HTML برای آپلود فایل

کد html برای پیاده سازی سمت کاربر استفاده میشود. در المنت form از متد post  استفاده میکنیم. توجه داشته باشید که enctype برابر multipart/form-data است.

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

 

نکاتی در مورد کد بالا:

  • multipart/form-data  نوع داده ارسالی را مشخص میکند.
  • type="file" در تگ input مشخص میکند که فرم آپلود باید نمایش داده شود.
  • کد بالا داده های فرم را به سمت upload.php میکند که در قدم بعدی پیاده سازی میکنیم.

 

 کد نویسی قسمت PHP

فایل upload.php دارای کدهای زیر است:

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}

 

توضیحات کد بالا

  • $target_dir = "uploads/" دایرکتوری که فایلها آنجا باید ذخیره شوند را مشخص میکند.
  • $target_file مسیر فایل آپلود شده را مشخص میکند.
  • $uploadOk=1 در ادامه کد استفاده خواهد شد.
  • $imageFileType پسوند فایل را نگه میدارد.
  • و بعد بررسی میکنیم که تصویر آپلود شده یک تصویر واقعی است یا خیر. (یک ترفند امنیتی)

 

حالا میتوانیم کمی به ویژگیهای کدمان اضافه کنیم. ولی قبل از آن بهتر است کمی بیشتر در مورد $_FILES بدانیم 🙂

  • $_FILES["fileToUpload"]["name"] نام اصلی فایل در سمت کاربر را در خود دارد.
  • $_FILES["fileToUpload"]["type"] نام mime-type فایل را در خود دارد.
  • $_FILES["fileToUpload"]["size"] سایز فایل را بر اساس بایت نمایش میدهد.
  • $_FILES["fileToUpload"]["tmp_name"] نام فایل موقت را دارد.
  • $_FILES["fileToUpload"]["error"]  هر خطایی که در هنگام انتقال فایل وجود داشته باشد را دارد.

برای مطالعه بیشتر میتونید به قسمت POST method uploads در مستندات PHP مراجعه کنید.

 

بررسی وجود فایل از قبل

اول از همه بررسی میکنیم که آیا فایلی با این نام از قیل وجود داشته در دایرکتوری مقصد یا خیر، و یک پیغام نمایش میدهیم.

// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}

 

محدود کردن سایز فایل آپلود

توجه کنید که نام فیلد فایل در فرم HTML ما در fileToUpload  است. میخواهیم سایز فایل را بخوانیم و اگر از 500KB بیشتر بود یک پیغام خطا نمایش بدیم.

 // Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

 

محدود کردن نوع فایل

کد زیر به کاربران اجازه میدهد که فقط فایلهایی با پسوند JPEG، JPG، PNG و GIF را آپلود کنند. هر فایل دیگری باعث میشود پیغام خطا نمایش داده شود.

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}

 

 

کد کامل آپلود فایل در php

کد کامل فایل upload.php به این صورت است:

$target_dir    = "uploads/";
$target_file   = $target_dir . basename( $_FILES["fileToUpload"]["name"] );
$uploadOk      = 1;
$imageFileType = strtolower( pathinfo( $target_file, PATHINFO_EXTENSION ) );

// Check if image file is a actual image or fake image
if ( isset( $_POST["submit"] ) ) {
	$check = getimagesize( $_FILES["fileToUpload"]["tmp_name"] );
	if ( $check !== false ) {
		echo "File is an image - " . $check["mime"] . ".";
		$uploadOk = 1;
	} else {
		echo "File is not an image.";
		$uploadOk = 0;
	}
}

// Check if file already exists
if ( file_exists( $target_file ) ) {
	echo "Sorry, file already exists.";
	$uploadOk = 0;
}

// Check file size
if ( $_FILES["fileToUpload"]["size"] > 500000 ) {
	echo "Sorry, your file is too large.";
	$uploadOk = 0;
}

// Allow certain file formats
if ( $imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
     && $imageFileType != "gif" ) {
	echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
	$uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ( $uploadOk == 0 ) {
	echo "Sorry, your file was not uploaded.";
	
// if everything is ok, try to upload file
} else {
	if ( move_uploaded_file( $_FILES["fileToUpload"]["tmp_name"], $target_file ) ) {
		echo "The file " . basename( $_FILES["fileToUpload"]["name"] ) . " has been uploaded.";
	} else {
		echo "Sorry, there was an error uploading your file.";
	}
}

 

توضیحاتی در مورد کد

  • move_uploaded_file() این تابع فایل آپلود شده را از مکان موقت به آدرس مقصد مورد نظر منتقل میکند.

 

php-uploader
دانلود “آپلود فایل در php”
نسخه v1.0.0 12 بار دانلود شده است 2 KB

daskhatmin

فواد طهماسبی

فواد طهماسبی هستم، موسس وبسایت آموزشی دسخط. چندین سال تجربه کاری مرتبط با تکنولوژیهای توسعه وب دارم. علاقمند به ایده پردازی و توسعه کسب و کارهای اینترنتی هستم.

2 دیدگاه برای “آموزش آپلود فایل در php”

  1. امیرحسین گفت:

    عالی

    1. خیلی ممنون از شما 🙂

*اگر پرسشی دارید که مربوط به این مطلب نیست لطفا در بخش پرسشها مطرح کنید. در غیر این صورت دیدگاه شما تایید نخواهد شد.


کد HTMLCSSJavaScriptPHP