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

با این حال، آگلود فایل براحتی خطر آفرین شده و بنابراین همیشه در هنگام آپلود فایل ها باید مراقب باشید!

فایل php.ini پیکربندی را پیکربندی کنید.
ابتدا اطمینان حاصل کنید که پی اچ پی پیکربندی شده است تا اجازه آپلود فایل را فراهم کند. برای این کار در فایل «php.ini» ، دستورالعمل file_uploads را جستجو کنید و آن را به صورت زیر مقدار دهید:

file_uploads = On

ایجاد فرم HTML

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

<!DOCTYPE html>
<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 ، رعایت کنید:

  1. اطمینان حاصل کنید که فرم از “method = “post استفاده می کند.
  2. فرم همچنین نیاز به ویژگی زیر دارد: “enctype = “multipart/form-data. این مشخص می کند که کدام نوع محتوا برای ارسال فرم استفاده می شود.

بدون رعایت پیشنیازهای فوق، آپلود فایل کار نخواهد کرد.

موارد دیگر را که باید به خاطر بسپارید:

خاصیت type  کنترل input  باید 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;
}
}
?>

توضیح اسکریپت فوق:

  • متغیر $target_dir = “uploads/”  پوشه ای را تعیین می کند که فایل های ذخیره خواهند شد.
  • متغیر $target_file ، مسیر ذخیره شدن فایل را تعیین می کند.
  • متغیر $uploadOk فعلاً کاربری ندارد.(بعدا استفاده خواهد شد)
  • متغیر $imageFileType پسوند فایل را بصورت حروف کوچک نگهداری می کند.
  • در ادامه بررسی می کند که فایل ارسال شده یک تصویر واقعی است تا یک تصویر تقلبی.

توجه: شما نیاز به ایجاد یک زیر پوشه جدید به نام “uploads” در پوشه ای که فایل “upload.php” قرار دارد. فایل های آپلود شده در آنجا ذخیره خواهند شد.

بررسی کنید که آیا فایل در حال حاضر وجود دارد

اکنون می توانیم برخی محدودیت ها را اضافه کنیم.

ابتدا، بررسی خواهیم کرد که اگر فایل در پوشه آپلود وجود داشته باشد،یک پیام خطا نمایش داده می شود و  متغیر $uploadOk مقدار 0 بگیرد.

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

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

فیلد ورودی فایل در فرم HTML ما در بالا نام “fileToUpload” نام دارد.

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

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

محدود کردن نوع فایل

کد زیر فقط اجازه می دهد تا کاربران فایل JPG، JPEG، PNG و GIF را آپلود کنند. همه انواع فایل های دیگر را قبول نکرده، پیغام خطا نمایش داده و متغیر $uploadOk را با صفر مقداردهی می کند:

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

برنامه کامل آپلود فایل

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