PHP – بارگذاری فایل (File Upload)
بارگذاری فایل در PHP
با استفاده از PHP، بارگذاری فایلها به سرور بسیار آسان است. اما با این سهولت، خطراتی نیز همراه است، بنابراین همیشه باید در هنگام اجازه دادن به بارگذاری فایلها احتیاط کنید!
پیکربندی فایل "php.ini"
file_uploads = On
ایجاد فرم HTML
سپس، یک فرم 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));
// بررسی اینکه فایل تصویری واقعی است یا جعلی
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
مسیر فایل را که باید بارگذاری شود، مشخص میکند.$uploadOk=1
هنوز استفاده نشده است (در ادامه استفاده خواهد شد).$imageFileType
پسوند فایل را به صورت کوچک نگه میدارد.
بررسی وجود فایل
حالا میتوانیم برخی محدودیتها را اضافه کنیم.
ابتدا، بررسی خواهیم کرد که آیا فایل قبلاً در پوشه “uploads” وجود دارد یا خیر. اگر وجود داشته باشد، پیغام خطا نمایش داده شده و $uploadOk
به ۰ تنظیم میشود:
// بررسی اینکه فایل قبلاً وجود دارد یا خیر
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
محدود کردن اندازه فایل
فیلد ورودی فایل در فرم HTML ما نام “fileToUpload” است.
حالا، میخواهیم اندازه فایل را بررسی کنیم. اگر فایل بزرگتر از ۵۰۰KB باشد، پیغام خطا نمایش داده شده و $uploadOk
به ۰ تنظیم میشود:
// بررسی اندازه فایل
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
محدود کردن نوع فایل
کد زیر فقط به کاربران اجازه میدهد فایلهای JPG، JPEG، PNG و GIF بارگذاری کنند. سایر انواع فایلها پیغام خطا را نمایش داده و $uploadOk
را به ۰ تنظیم میکند:
// اجازه دادن به فرمتهای خاص فایل
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));
// بررسی اینکه فایل تصویری واقعی است یا جعلی
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;
}
}
// بررسی اینکه فایل قبلاً وجود دارد یا خیر
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// بررسی اندازه فایل
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// اجازه دادن به فرمتهای خاص فایل
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// بررسی اینکه آیا $uploadOk به دلیل خطا به ۰ تنظیم شده است
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// اگر همه چیز خوب است، سعی کنید فایل را بارگذاری کنید
} 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.";
}
}
?>
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام