پی ایچ پی فائل اپ لوڈ

با استفاده از PHP می‌توان فایل‌ها را به سرور اپلود کرد.

ایجاد یک فرم اپلود فایل

اجازه دادن به کاربران برای اپلود فایل از فرم بسیار مفید است.

لطفاً فرم زیر را که برای اپلود فایل‌ها استفاده می‌شود، مشاهده کنید:

<html>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">نام فایل:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

لطفاً توجه داشته باشید که اطلاعات زیر مربوط به این فرم است:

ویژگی enctype برچسب <form> مشخص می‌کند که در هنگام ارسال فرم باید از چه نوع نوع محتوایی استفاده شود. در صورتی که فرم نیاز به داده‌های باینری دارد، مانند محتوای فایل، لطفاً از "multipart/form-data" استفاده کنید.

ویژگی type="file" برچسب <input> مشخص می‌کند که باید ورودی به عنوان فایل در نظر گرفته شود. به عنوان مثال، هنگام مشاهده در مرورگر، یک دکمه جستجو در کنار فیلد ورودی دیده می‌شود.

تعلیمات:اجازه دادن به کاربران برای اپلود فایل یک خطر بزرگ امنیتی است. لطفاً فقط به کاربران قابل اعتماد اجازه اپلود فایل دهید.

ایجاد اسکریپت اپلود

فائل "upload_file.php" شامل کد برای اپلود فایل‌ها:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "خطا: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "ذخیره شده در: " . $_FILES["file"]["tmp_name"];
  }
?>

با استفاده از آرایه جهانی PHP $_FILES، می‌توانید فایل از کامپیوتر مشتری به سرور دورآمدی آپلود کنید.

اولین پارامتر نام input فرم است، دومین زیر مجموعه می‌تواند "name", "type", "size", "tmp_name" یا "error" باشد. مثل این:

  • $_FILES["file"]["name"] - نام فایل آپلود شده
  • $_FILES["file"]["type"] - نوع فایل آپلود شده
  • $_FILES["file"]["size"] - اندازه فایل آپلود شده، به تعداد بایت
  • $_FILES["file"]["tmp_name"] - نام نسخه موقت فایل ذخیره شده در سرور
  • $_FILES["file"]["error"] - کد خطای ایجاد شده توسط آپلود فایل

این روش آپلود فایل بسیار ساده است. به دلیل اهمیت امنیت، باید محدودیت‌هایی در مورد اینکه چه کاربرانی مجاز به آپلود فایل هستند، تعیین کنید.

محدودیت‌های آپلود

در این اسکریپت، ما محدودیت‌های آپلود فایل را اضافه کرده‌ایم. کاربران فقط می‌توانند فایل‌های .gif یا .jpeg آپلود کنند و اندازه فایل باید کمتر از 20 کیلوبایت باشد:

<?php
if ((($_FILES["file"]["type"] == "image/gif"))
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "خطا: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "ذخیره شده در: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }
?>

تعلیمات:برای IE، شناسایی نوع فایل jpg باید pjpeg باشد، برای FireFox باید jpeg باشد.

ذخیره فایل آپلود شده

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

این فایل کپی موقت در پایان اسکریپت محو خواهد شد. برای ذخیره فایل آپلود شده، باید آن را به مکان دیگری کپی کنیم:

<?php
if ((($_FILES["file"]["type"] == "image/gif"))
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "رجوع رمز: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

آپریشن میں اس سکریپت نے اس فائل کی موجودگی کو پچھا، اگر نہیں موجود تھا تو اس فائل کو مقررہ فولدر میں کپی کردیا تھا。

تعلیمات:یہ مثال نئی فائل 'upload' میں فائل کو محفوظ کر چکا ہے。