آپلود فایل با PHP

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

در این نوشته ابتدا فرم آپلود را آماده می کنیم. قصد داریم در این فرم یک فایل عکس به سایت آپلود شود.

<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));
// 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;
  }
}
?>

توضیح اسکریپت PHP به شرح زیر است:

“/target_dir = “uploads$- دایرکتوری محل قرارگیری پرونده را مشخص می کند
target_file$ مسیر پرونده بارگذاری شده را مشخص می کند
upload_ok$ هنوز استفاده نشده است (بعداً استفاده خواهد شد)
imageFileType$ پسوند پرونده را نگه دارد (با حروف کوچک)
بعد ، بررسی کنید که آیا فایل تصویر یک تصویر واقعی است یا خیر.
توجه: شما باید دایرکتوری جدیدی به نام “uploads” را در دایرکتوری که پرونده “upload.php” در آن قرار دارد ، ایجاد کنید. پرونده های بارگذاری شده در آنجا ذخیره می شوند.

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

ابتدا بررسی خواهیم کرد که آیا پرونده از قبل در پوشه “uploads” وجود دارد یا خیر. اگر اینگونه باشد ، پیام خطایی نمایش داده می شود و upload_ok$ روی 0 تنظیم می شود:

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

اندازه پرونده را محدود کنید
قسمت ورودی فایل در فرم HTML ما در بالا “fileToUpload” نامگذاری شده است.

اکنون ، می خواهیم اندازه پرونده را بررسی کنیم. اگر پرونده از 500 کیلوبایت بزرگتر باشد ، پیام خطایی نمایش داده می شود و $ uploadOk روی 0 تنظیم می شود:

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

محدود کردن نوع پرونده
کد زیر فقط به کاربران امکان بارگذاری پرونده های JPG ، JPEG ، PNG و GIF را می دهد. قبل از تنظیم $ 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;
}

بارگذاری کامل فایل PHP اسکریپت
پرونده کامل “upload.php” اکنون به این شکل است:

<?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 ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>