آپلود فایل

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Php-menu.png
موارد آموزشی
فرم‌ها در PHP
PHP پیشرفته
۱تاریخ و زمان
۲دستور Include
۳مدیریت فایل
۴باز کردن/خواندن فایل
۵ساختن/نوشتن فایل
۶آپلود فایل
۷کوکی‌ها
۸Sessions
۹فیلترها
۱۰فیلترهای پیشرفته
۱۱JSON در PHP
شیء گرایی در PHP
پایگاه داده MySQL
XML در PHP
AJAX در PHP
مثال‌های PHP
مرجع PHP

با PHP، بارگذاری فایل روی سرور آسان است.[۱]

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

تنظیمات فایل "php.ini"

ابتدا، مطمئن شوید که تنظیمات PHP اجازه بارگذاری فایل را می‌دهد.

در فایل "php.ini" خود، عبارت file_uploads را جستجو کنید، و مقدار آن را روی On تنظیم کنید:

file_uploads = On

ساخت فرم HTML

در مرحله بعدی، یک فرم HTML ایجاد کنید که به کاربران اجازه انتخاب تصویری را که قصد بارگذاری آن را دارند را بدهد:

 1 <!DOCTYPE html>
 2 <html>
 3 <body>
 4 
 5 <form action="upload.php" method="post" enctype="multipart/form-data">
 6     Select image to upload:
 7     <input type="file" name="fileToUpload" id="fileToUpload">
 8     <input type="submit" value="Upload Image" name="submit">
 9 </form>
10 
11 </body>
12 </html>

برخی از قوانینی که می‌بایست در کد بالا رعایت شوند:

  • اطمینان حاصل کنید که فرم از method="post" استفاده می‌کند
  • همچنین فرم به خاصیت زیر نیز احتیاج دارد: enctype="multipart/form-data". این خاصیت نوع محتوای مورد استفاده هنگام ثبت اطلاعات فرم را مشخص می‌کند

بدون رعایت موارد مورد نیاز فوق، بارگذاری فایل کار نخواهد کرد.

نکته ای که باید به آن توجه کنید این است که:

  • خاصیت type="file" تگ <input> فیلد ورودی را به صورت یک کنترل انتخاب فایل به همراه یک دکمه "browse" که در کنار کنترل ورودی قرار گرفته نشان می‌دهد

فرم بالا اطلاعات را به فایلی به نام "upload.php" ارسال می‌کند، که ما آن را در مراحل بعدی خواهیم ساخت.

ایجاد فایل اسکریپت بارگذاری

فایل "uploads.php" شامل کد زیر برای بارگذاری یک فایل است:

 1 <?php
 2 $target_dir = "uploads/";
 3 $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
 4 $uploadOk = 1;
 5 $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
 6 // Check if image file is a actual image or fake image
 7 if(isset($_POST["submit"])) {
 8     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
 9     if($check !== false) {
10         echo "File is an image - " . $check["mime"] . ".";
11         $uploadOk = 1;
12     } else {
13         echo "File is not an image.";
14         $uploadOk = 0;
15     }
16 }
17 ?>

توضیح اسکریپت PHP بالا:

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

بررسی وجود داشتن فایل

حال ما می‌توانیم یک سری محدودیت‌ها را اضافه کنیم.

ابتدا، ما بررسی می‌کنیم که آیا فایل از قبل در پوشه "uploads" وجود دارد یا خیر. در صورت وجود، یک پیغام خطا نمایش داده می‌شود، و متغیر $uploadOk با مقدار ۰ مقدار دهی می‌شود:

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

محدودسازی اندازه فایل

نام فیلد ورودی فایل درون فرم HTML ما "fileToUpload" است.

حال، ما اندازه فایل را بررسی می‌کنیم. در صورتی که اندازه فایل بزرگتر از 500KB باشد، یک پیغام خطا نمایش داده می‌شود، و متغیر $uploadOk با مقدار ۰ مقداردهی می‌شود:

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

محدودسازی نوع فایل

کد زیر تنها به کاربران اجازه می‌دهد که فایل‌های JPG ,JPEG ,PNG و GIF را بارگذاری کنند. سایر انواع فایل یک پیغام خطا را قبل از مقداردهی متغیر $uploadOk با مقدار ۰ نمایش می‌دهد:

1 // Allow certain file formats
2 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
3 && $imageFileType != "gif" ) {
4     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
5     $uploadOk = 0;
6 }

کد کامل اسکریپت فایل Upload

کد کامل فایل "upload.php" به صورت زیر است:

 1 <?php
 2 $target_dir = "uploads/";
 3 $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
 4 $uploadOk = 1;
 5 $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
 6 // Check if image file is a actual image or fake image
 7 if(isset($_POST["submit"])) {
 8     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
 9     if($check !== false) {
10         echo "File is an image - " . $check["mime"] . ".";
11         $uploadOk = 1;
12     } else {
13         echo "File is not an image.";
14         $uploadOk = 0;
15     }
16 }
17 // Check if file already exists
18 if (file_exists($target_file)) {
19     echo "Sorry, file already exists.";
20     $uploadOk = 0;
21 }
22 // Check file size
23 if ($_FILES["fileToUpload"]["size"] > 500000) {
24     echo "Sorry, your file is too large.";
25     $uploadOk = 0;
26 }
27 // Allow certain file formats
28 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
29 && $imageFileType != "gif" ) {
30     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
31     $uploadOk = 0;
32 }
33 // Check if $uploadOk is set to 0 by an error
34 if ($uploadOk == 0) {
35     echo "Sorry, your file was not uploaded.";
36 // if everything is ok, try to upload file
37 } else {
38     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
39         echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
40     } else {
41         echo "Sorry, there was an error uploading your file.";
42     }
43 }
44 ?>

مرجع کامل فایل سیستم در PHP

برای مشاهده یک مرجع کامل از توابع سیستم فایل، به مرجع فایل سیستم در PHP مراجعه کنید.


منابع آموزشی