چطور میتوانیم فرم آپلود تصویر یا فایل به زبان 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 را هم در نظر بگیرید.
اتمام درس
محصولات برگزیده مناسب شما
دوره ی آموزش ساخت فریمورک برای پی اچ پی با PHP MVC دوره ی آموزش کامل زبان پی اچ پی ( PHP ) دوره ی پروژه محور ساخت هتلداری با php mvc دوره پروژه محور ساخت فروشگاه بامیلو با لاراول