آموزش PHP

آموزش PHP - آپلود فایل

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

اطلاعات در صفحه phpinfo.php دایرکتوری موقت را که برای آپلود فایل استفاده شده به عنوان upload_tmp_dir شرح می دهد و حداکثر اندازه مجاز فایل هایی که می توانند آپلود شوند به عنوان upload_max_filesize بیان شده است. این پارامترها به پیکربندی php.ini تنظیم شده است.

روند آپلود فایل مراحل زیر را دنبال می کند:

  • کاربر صفحه ای را که حاوی یک فرم HTML است و شامل یک فایل متنی، یک دکمه مرور و یک دکمه ارسال است، باز می کند. 
  • کاربر بر روی دکمه فهرست کلیک کرده و یک فایل برای آپلود از کامپیوتر محلی انتخاب می کند. 
  • مسیر کامل به فایل انتخاب شده در متن نشان داده می شود و سپس کاربر دکمه ارسال را کلیک می کند. 
  • فایل انتخاب شده به دایرکتوری موقت در سرور ارسال می شود. 
  • اسکریپت PHP که به عنوان دستیار فرم در مشخصه عمل form مشخص شده است، بررسی می کند که فایل وارد شده و سپس فایل را در یک فایل مورد نظر کپی می کند. 
  • اسکریپت PHP موفقیت کاربر را تایید می کند.

به طور معمول هنگام نوشتن فایل ها برای مکان های موقت و نهایی لازم است که مجوز هایی را تنظیم کنید که امکان نوشتن فایل را فعال کنند. اگر هر دو به صورت خواندنی تنظیم شوند، فرآیند خراب خواهد شد.

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

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

کد HTM زیر یک فرم آپلود کننده ایجاد می کند. این فرم دارای ویژگی تنظیم post و ویژگی enctype به چند قطعه / فرم داده تنظیم شده است.

<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size =$_FILES['image']['size'];
      $file_tmp =$_FILES['image']['tmp_name'];
      $file_type=$_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
      
      $expensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$expensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152){
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true){
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action="" method="POST" enctype="multipart/form-data">
         <input type="file" name="image" />
         <input type="submit"/>
      </form>
      
   </body>
</html>

نتیجه زیر را تولید می کند:

upload form

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

یک متغیر جهانی PHP با نام $_FILES وجود دارد. این متغیر یک آرایه دو بعدی است و تمام اطلاعات مربوط به فایل آپلود شده را نگه می دارد. بنابراین اگر مقدار مشخص شده برای نام ورودی در فرم آپلود فایل باشد، PHP پنج متغیر زیر را ایجاد می کند:

  • $_FILES['file']['tmp_name'] : فایل آپلود شده در دایرکتوری موقت در سرور وب می باشد.
  • $_FILES['file']['name'] : نام واقعی فایل آپلود شده می باشد. 
  • $_FILES['file']['size'] :اندازه در بایت فایل آپلود شده می باشد. 
  • $_FILES['file']['type'] : نوع MIME فایل آپلود شده می باشد. 
  • $_FILES['file']['error'] : کد خطا مربوط به بارگذاری این فایل می باشد.

مثال

مثال زیر باید تصاویر آپلود را آپلود کرده و نتیجه را به صورت اطلاعات فایل آپلود باز گرداند.

<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size = $_FILES['image']['size'];
      $file_tmp = $_FILES['image']['tmp_name'];
      $file_type = $_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
      
      $expensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$expensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152) {
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true) {
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action = "" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "image" />
         <input type = "submit"/>
			
         <ul>
            <li>Sent file: <?php echo $_FILES['image']['name'];  ?>
            <li>File size: <?php echo $_FILES['image']['size'];  ?>
            <li>File type: <?php echo $_FILES['image']['type'] ?>
         </ul>
			
      </form>
      
   </body>
</html>

نتیجه زیر را تولید می کند:

upload script

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش PHP

Learn PHP

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

آخرین مقالات