با php این امکان وجود دارد که فایل هایی را به سرور اپلود نمائید
ایجاد کردن فرم  اپلود فایل
 اینکه به کاربر امکان اپلود فایل از طریق یک فرم را بدهید بسیار مفید خواهد بود
 برای اپلود کرد فایل می توانید فرم زیر را بکار ببرید
 <html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>
 مطالبی درباره فرم مثال بالا :
 پارامتر enctype فرم  اطلاعات فرم به چه صورت منتقل شود . مثلا مقدار multipart/form-data برای این ویژگی یعنی داده های فرم بصورت دو دویی یعنی باینری منتقل شوند
 عبارت type="file" در تگ inpute یعنی یک کادر دریافت ادرس فایل به کاربر نشان داده شود  یعنی در اینجا کنار کادر دریافت داده یک دکمه browse هم قرار می گیرد
 اینکه به کاربر اجازه دهید فایلی را به فرم خود ضمیمه کند تا اپلود شود دارای خطر بسیار است
 دستورات زیر برای اپلود کردن فایلی است که کاربر انرا در فرم مشخص نموده است
 <?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_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 "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>
 با استفاده از ارایه سراسری FILES _$ شما می توانید فایلی را که در کامپیوتر کاربر است روی سرور اپلود نمائید
 اولین پارامتر نام فیلد دریافت نام و ادرس فایل است  است

 و پارامتر دوم می تواند هر کدام از مقادیر زیر باشد :

"name", "type", "size", "tmp_name" or "error"

  •  $_FILES["file"]["name"]

نام فایلی که می خواهیم اپلود شود

  •  $_FILES["file"]["type"]
 نوع فایلی که می خواهیم اپلود شود
  •  $_FILES["file"]["type"]
 اندازه در واحد کیلو بایت فایلی که می خواهیم اپلود شود
  •  $_FILES["file"]["tmp_name"] 
نام فایل کپی موقت از فایل ذخیره شده در سرور
  • $_FILES["file"]["error"] 
خطایی که از اپلود شدن فایل ایجاد شده است
توضیح مثال بالا :
if ($_FILES["file"]["error"] > 0)
 بررسی می کند اگر برای اپلود فایلی که نام ان را در فیلدی به نام file درفرم مشخص کرده ایم خطایی رخ داده انگاهکاری انجام دهد . اگر شماره خطا برای اپلود این فایل بیشتر از صفر بود یعنی خطایی رخ داده . شماره خطا در خانه ای که اندیس ان "error"  است قرار دارد
echo "Error: " . $_FILES["file"]["error"] . "<br>";
 شماره خطای رخ داده شده را در خروجی نمایش دهد
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
نام فایلی که نام و ادرس ان در فیلد به نام FILE در فرم مشخص شده در خروجی با دستور ECHO نشان داده میشود
 echo "Type: " . $_FILES["file"]["type"] . "<br>";
 نوع فایلی که برای اپلود شدهن در فیلد با نام file در فرم مشخص شده بود ، در خروجی نشان داده می شود
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
اندازه فایلی که در فیلد با نام file برای اپلود شدن در فرم ، مشخص کرده بودیم بر حسب کیلو بایت در خروجی نشا داده می شود
 echo "Stored in: " . $_FILES["file"]["tmp_name"];
نام فایل موقتی که برای کپی فایلی که می خواهیم  اپلود شود ، در سرور در نظر گرفته شده در خروجی نشان داده می شود
 
روش بسیار ساده ای برای اپلود کردن فایل وجود دارد  . برای حفظ موارد امنیتی شما باید محدودیت هایی را وضع کنید نسبت به نوع فایلهایی که کارب رمی تواند اپلود نماید
 
مثال
در کد زیر ما قوانینی را وضع کرده ایم که کاربر بتواند فقط فایلهایی با پسوند .gif, .jpeg, و .png و حدوکثر اندازه 20 کیلو بایت را اپلود نماید
<?php
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_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 "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }
?>
 در مرورگر IE پسوند JPG بصورت PJPEG و در فایر فاکس باید بصورت JPEG مشخص شود
بررسی کد بالا
در خط زیر ابتدا ارایه ای شامل پسوندهای مجاز از نظر ما ، ایجاد می شود
$allowedExts = array("jpg", "jpeg", "gif", "png");
 در دستور زیر ، با دستور explode عبارت رشته ای نام فایل و مسیر ان ، با توجه به جداکننده نقطه به چند زیر رشته شکسته می شود و هر زیر رشته در خانه ای از ارایه قرار می گیرد سپس با دستور end اخرین زیر رشته ای که در این ارایه بوجود امده که در مثال ما پسوند فایل می شود ، در متغیر extension قرار می گیرد
$extension = end(explode(".", $_FILES["file"]["name"]));
 دستور شرطی if بعد از ان بررسی می کند که type فایل اپلود شده کدام یک از موارد است
($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg")

شرط بعدی بررسی می کند اندازه فایل اپلود شده ایا کمتر از 20000 کیلو بایت است  

($_FILES["file"]["size"] < 20000)

 دستور بعدی بررسی می کند ایا عبارت قرار گرفته در متغیر extension درون ارایه ای که از پسوندهای مجازمان ایجاد کرده بودیم قرار دارد
in_array($extension, $allowedExts)
سپس اگر تمامی شرطها جواب true داد انگاه بررسی کند که در صورتیکه خطایی در کار اپلود فایل به سرور رخ داده پیامی نشان داده شود
if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
در غیر این صورت مشخصات فایل اپلود شده نشان داده شود
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
ذخیره کردن فایل آپلود شده در سرور
 مثال بالا یک کپی از فایل اپلود شده در سرور ایجادکرد
کد زیر این عمل را انجام می دهد
<?php
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_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"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
 کد بالا بررسی می کند که اگر فایل مورد نظر در سرور نیست یا هست کپی انرا در پوشه UPLOAD سرور ذخیره نماید
توضیحات کد بالا:
بعد از نمایش اطلاعات فایلی که می خواهیم اپلود شود ، بررسی کند که اگر فایل در سرور موجود است پیامی در خروجی نشان داد ه شود
if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
با تابع file_exists این بررسی انجام می شود 
در غیر این صورت با دستور move_uploaded_file فایل اپلود شده در محل مورد نظر در سرور  کپی شود
 move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
 و سپس پیامی در خروجی نشان داده شود
 echo "Stored in: " . "upload/" . $_FILES["file"]["name"];