PHP – بارگذاری فایل (File Upload)

بارگذاری فایل در PHP

با استفاده از PHP، بارگذاری فایل‌ها به سرور بسیار آسان است. اما با این سهولت، خطراتی نیز همراه است، بنابراین همیشه باید در هنگام اجازه دادن به بارگذاری فایل‌ها احتیاط کنید!

پیکربندی فایل "php.ini"

اولین قدم، اطمینان از پیکربندی PHP برای اجازه دادن به بارگذاری فایل‌ها است.

در فایل “php.ini” خود، به دنبال دستور file_uploads بگردید و آن را به On تنظیم کنید:

file_uploads = On

ایجاد فرم HTML

سپس، یک فرم HTML ایجاد کنید که به کاربران اجازه دهد فایل تصویری که می‌خواهند بارگذاری کنند را انتخاب کنند:

<!DOCTYPE html>
<html>
<body>
<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>
</body>
</html>

قوانین برای فرم HTML بالا:

  • مطمئن شوید که فرم از method="post" استفاده می‌کند.
  • فرم همچنین به صفت enctype="multipart/form-data" نیاز دارد. این صفت نوع محتوا را هنگام ارسال فرم مشخص می‌کند.
  • بدون رعایت این الزامات، بارگذاری فایل کار نخواهد کرد.

نکات دیگر:

  • صفت type="file" در تگ <input> کنترل انتخاب فایل را نشان می‌دهد و دکمه “Browse” در کنار آن قرار دارد.
  • فرم بالا داده‌ها را به فایلی به نام “upload.php” ارسال می‌کند که در ادامه ایجاد خواهیم کرد.

ایجاد اسکریپت PHP برای بارگذاری

فایل “upload.php” حاوی کد برای بارگذاری یک فایل است:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// بررسی اینکه فایل تصویری واقعی است یا جعلی
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;
  }
}
?>

توضیحات کد PHP:

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

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

حالا می‌توانیم برخی محدودیت‌ها را اضافه کنیم.

ابتدا، بررسی خواهیم کرد که آیا فایل قبلاً در پوشه “uploads” وجود دارد یا خیر. اگر وجود داشته باشد، پیغام خطا نمایش داده شده و $uploadOk به ۰ تنظیم می‌شود:

// بررسی اینکه فایل قبلاً وجود دارد یا خیر
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

محدود کردن اندازه فایل

فیلد ورودی فایل در فرم HTML ما نام “fileToUpload” است.

حالا، می‌خواهیم اندازه فایل را بررسی کنیم. اگر فایل بزرگ‌تر از ۵۰۰KB باشد، پیغام خطا نمایش داده شده و $uploadOk به ۰ تنظیم می‌شود:

// بررسی اندازه فایل
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

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

کد زیر فقط به کاربران اجازه می‌دهد فایل‌های JPG، JPEG، PNG و GIF بارگذاری کنند. سایر انواع فایل‌ها پیغام خطا را نمایش داده و $uploadOk را به ۰ تنظیم می‌کند:

// اجازه دادن به فرمت‌های خاص فایل
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

اسکریپت کامل PHP برای بارگذاری

فایل “upload.php” کامل به صورت زیر خواهد بود:

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

// بررسی اینکه فایل تصویری واقعی است یا جعلی
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;
  }
}

// بررسی اینکه فایل قبلاً وجود دارد یا خیر
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// بررسی اندازه فایل
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// اجازه دادن به فرمت‌های خاص فایل
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// بررسی اینکه آیا $uploadOk به دلیل خطا به ۰ تنظیم شده است
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// اگر همه چیز خوب است، سعی کنید فایل را بارگذاری کنید
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.