ورود / ثبت نام سبد خرید 0
چطور میتوانیم فرم آپلود تصویر یا فایل به زبان php درست کنیم؟
برای اینکه کاربران بتوانند در سایت شما فایل آپلود کنند شما نیاز دارید یک فرم HTML ایجاد کنید و سپس زبان پی اچ پی به راحتی هرچه تمام تر فایل را به سرور منتقل میکند .
سیستم آپلود به این صورت است که ابتدا فایل به یک دایرکتوری موقتی اپلود میشود و سپس توسط زبان php به مقصد اصلی خود منتقل میشود .
برای اینکه متوجه شوید فایل موقت اپلود کجاست به صفحه ی phpinfo.php مراجعه کنید و دنبال upload_tmp_dir بگردید و همچنین متغیری دیگری وجود دارد که بیشترین حجم فایل آپلودی را مشخص میکند و upload_max_filesize نام دارد.
این دو متغیر درون فایل php.ini تعریف و مقداردهی شده اند.
مراحل آپلود یک فایل در php به سرور طبق لیست زیر میباشد :
در سمت سرور نیاز است هم برای مقصدی که فایل در آن قرار میگیرد و هم مسیر موقتی مجوز نوشتن داده شود. اگر دایرکتوری های مورد نیاز read-only باشند یعنی مجوز نوشتن نداشته باشند عملیات آپلود با خطا مواجه میشود.
فایلی که آپلود میشود میتواند یک سند متنی ، یک تصویر یا هر فایل دیگری باشد .
با استفاده از کدهای زیر میتوانید یک فرم آپلود فایل در 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 یک متغیر سراسری به نام $_FILES وجود دارد . این متغیر یک آرایه دو بعدی است که تمام اطلاعات یک فایل آپلودی را در خود دارد .
اگر در فرم آپلودی که بصورت html ساختیم خاصیت name را file گذاشته باشیم . سپس php پنج متغیر زیر را در اختیار شما میگذارد :
در مثال زیر یک تصویر اپلود میشود و سپس اطلاعات فایل اپلود شده نمایش داده میشود :
<?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 را هم در نظر بگیرید.
اتمام درس
محصولات برگزیده مناسب شما