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.";
  }
}
?>

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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