چطور میتوانیم فرم آپلود تصویر یا فایل به زبان php درست کنیم؟
برای اینکه کاربران بتوانند در سایت شما فایل آپلود کنند شما نیاز دارید یک فرم HTML ایجاد کنید و سپس زبان پی اچ پی به راحتی هرچه تمام تر فایل را به سرور منتقل میکند .
سیستم آپلود به این صورت است که ابتدا فایل به یک دایرکتوری موقتی اپلود میشود و سپس توسط زبان php به مقصد اصلی خود منتقل میشود .
برای اینکه متوجه شوید فایل موقت اپلود کجاست به صفحه ی phpinfo.php مراجعه کنید و دنبال upload_tmp_dir بگردید و همچنین متغیری دیگری وجود دارد که بیشترین حجم فایل آپلودی را مشخص میکند و upload_max_filesize نام دارد.
این دو متغیر درون فایل php.ini تعریف و مقداردهی شده اند.
مراحل آپلود یک فایل در php به سرور طبق لیست زیر میباشد :
- کاربر یک صفحه ی اینترنتی را باز میکند و یک فرم HTML را میبیند که یک قسمتی برای انتخاب فایل وجود دارد سپس فایل خود را از کامیپوترش ، انتخاب و دکمه ی ارسال را میزند
- فایل انتخاب شده توسط کاربر ، به یک دایرکتوری موقت سمت سرور ارسال میگردد
- اسکریپت php بررسی میکند که آیا فایل با صحت کامل به سمت سرور رسیده است یا نه ؟ اگر رسیده باشد آنرا به محلی که برنامه نویس تعریف کرده کپی میکند
- سپس پیام موفقیت آمیز بودن آپلود نمایش داده میشود
در سمت سرور نیاز است هم برای مقصدی که فایل در آن قرار میگیرد و هم مسیر موقتی مجوز نوشتن داده شود. اگر دایرکتوری های مورد نیاز read-only باشند یعنی مجوز نوشتن نداشته باشند عملیات آپلود با خطا مواجه میشود.
فایلی که آپلود میشود میتواند یک سند متنی ، یک تصویر یا هر فایل دیگری باشد .
ساخت فرم آپلود در php
با استفاده از کدهای زیر میتوانید یک فرم آپلود فایل در php بسازید . متد فرم از نوع post تعریف شده است و چون قراره با این فرم فایل ارسال کنیم حتما enctype را از نوع multipart/form-data تعریف کنید.
<?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>
بعد از نوشتن کدهای بالا فرمی به شکل زیر برای شما ساخته میشود :

نوشتن اسکریپت آپلود فایل با php
در زبان برنامه نویسی php یک متغیر سراسری به نام $_FILES وجود دارد . این متغیر یک آرایه دو بعدی است که تمام اطلاعات یک فایل آپلودی را در خود دارد .
اگر در فرم آپلودی که بصورت html ساختیم خاصیت name را file گذاشته باشیم . سپس php پنج متغیر زیر را در اختیار شما میگذارد :
- $_FILES['file']['tmp_name'] : فایلی که بصورت موقتی در دایرکتوری موقتی آپلود شده است
- $_FILES['file']['name'] : نام دقیق فایلی که اپلود شده است
- $_FILES['file']['size'] : سایز فایلی که آپلود شده به byte
- $_FILES['file']['type'] : نوع یا فرمت MIME type فایلی که اپلود شده است
- $_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>
نتیجه ی کدهای بالا مشابه تصویر زیر خواهد بود :

نکته : برای یادگیری سریع زبان برنامه نویسی پی اچ پی از یک دوره ی آموزش ویدیویی پروژه محور php استفاده کنید و بعد از حرفه ای شدن در php حتما آموزش php mvc را هم در نظر بگیرید.
اتمام درس
نظرات
هنوز نظری ثبت نشده است. اولین نفری باشید که نظر میدهد!