آپلود فایل در php
ابتدا فایلی با نام form.php ایجاد کرده و کد html زیر را درآن کپی کنید. چیزی که ممکن است در این کد عجیب به نظر برسد ، خاصیت enctype="multipart/form-data" مربوط به المان form است. این خاصیت تعیین می کند که فرم توانایی ارسال داده از نوع باینری (فایل) را دارد. مشخصه های method و action هم به ترتیب روش ارسال داده و نام صفحه ای که داده ها باید به آن ارسال گردد را مشخص می کنند.
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="fileToUp">Select file : </label>
<input name="fileToUp" type="text" />
<input name="upload" type="submit" value="upload" />
</form>
آپلود فایل و بررسی خطا
یک فایل دیگر با نام upload.php ایجاد کرده و کد زیر را درآن کپی کنید:
If($_FILES['fileToUp']['error'] > 0){
//نمایش پیام مناسب
} else {
// ادامه کد
}
این کد وجود خطا را هنگام ارسال فایل، بررسی می کند.
جزئیات فایل
برای نمایش جزئیات فایل می توانیم به صورت زیر عمل کنیم :
//نمایش نام فایل
echo "File name : " . $_FILES['fileToUp']['name'] . "<br/>";
// نمایش نوع فایل
echo "File type : " . $_FILES['fileToUp']['type'] . "<br/>";
// اندازه فایل برحسب بایت
echo "File size : " . $_FILES['fileToUp']['size'] . "<br/>";
//نامی که موقتا به فایل داده می شود
echo "File temp name : " . $_FILES['fileToUp']['tmp_name'];
پسوند فایل
فرض کنید بخواهید کاربر، تنها مجاز به ارسال فایلهایی با پسوند مشخصی باشد برای اینکار، آرایه ایی از پسوندهای مجاز تعریف می کنیم :
$validExtension = array('.jpg', '.jpeg', '.gif', '.png');
حال باید پسوند فایل ارسال شده توسط کاربر را بدست آوریم :
$fileExtension = strrchr($_FILES['fileToUp']['name'], '.');
حال باید بررسی کنیم که پسوند فایل، جزء پسوندهای مجاز است یا خیر:
If(in_array($fileExtension, $validExtension))
//فایل معتبر است و ادامه کد
}else{
//پسوند غیر مجاز
}
اندازه فایل
برای بررسی فایل از نظر حجمی می توانیم به صورت زیر عمل کنیم. در پایین تنها فایلهای با حجم کمتر از 512 کیلوبایت مجاز هستند :
If(($_FILES['fileToUp']['size'] / 1024) < 512){
ادامه کد
}else{
//خطا
}
ذخیره فایل
حال که فایل از فیلترهای مختلف عبور کرد، در انتها باید در محل مناسبی از هارد دیسک به وسیله تابع move_uploaded_file ، ذخیره گردد. $newName نام جدیدی است که به فایل اختصاص می دهیم و با یک برچسب زمانی شروع می شود :
$newName = time() . '_' . $_FILES['fileToUp']['name'];
متغییر $distination نام و محل ذخیره فایل را مشخص می کند :
$distination = 'upload/' . $newName;
حال فایل را ذخیره می کنیم :
If(move_uploaded_file($_FILES['fileToUp']['tmp_name'], $distination)){
//فایل با موفقیت آپلود گردید.
}else{
//خطا در ارسال
}
در PHP به طور پیش فرض، حداکثر حجم فایل قابل آپلود و حداکثر داده قابل ارسال به روش POST به ترتیب برابر 10 و 8 مگابایت بوده، برای تغییر این مقادیر وارد فایل php.ini شده و پارامترهای upload_max_filesize و post_max_size را به دلخواه تغییر دهید.
یا اینکه می توانید فایل .htaccess را در دایرکتوری ریشه پروژه خود ایجاد کرده و دو دستور زیر را در آن کپی کنید :
php_value upload_max_filesize 10mb
php_value post_max_size 10mb