آموزش آپلود همزمان چند تصویر با php
0 0

آموزش آپلود همزمان چند تصویر با php


آموزش آپلود همزمان چند تصویر با php

در این پست آموزش آپلود همزمان چند تصویر با PHP را برایتان قرار داده ایم.

برای ظاهر برنامه از یک قالب ساده استفاده شده که درک کدهای CSS آن خیلی راحت می باشد.

توضیح کدهای فایل index.php

<html>
<head>
    <meta charset="UTF-8">
    <title>آپلود تصویر</title>
    <link href="style.css" type="text/css" rel="stylesheet">
</head>
<bod>
    <div class="wrapper">
        <div class="header">
            <a href="http://www.iranganj.ir"><img style="margin-top: 20px;margin-right: 30px;" src="logo.png"></a>
        </div>
        <div class="main">
            <div class="sidebar">
                <ul>
                    <li>
                        <a href="index.php">صفحه اصلی</a>
                    </li>
                </ul>
            </div>
            <?php
            $valid_formats = array("jpg", "JPG", "png", "PNG", "gif", "GIF", "bmp", "BMP");
            $max_file_size = 1024 * 100; //100 kb
            $path = "uploads/"; // Upload directory
            $count = 0;
            if (isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") {
                // Loop $_FILES to execute all files
                foreach ($_FILES['file_upload']['name'] as $f => $name) {
                    if ($_FILES['file_upload']['name'][$f] != "") {
                        if (!file_exists($path . $_FILES["file_upload"]["name"][$f])) {
                            if ($_FILES['file_upload']['error'][$f] == 4) {
                                continue; // Skip file if any error found
                            }
                            $imageInfo = getimagesize($_FILES["file_upload"]["tmp_name"][$f]);
                            $imageWidth = $imageInfo[0];
                            $imageHeight = $imageInfo[1];
                            if ($_FILES['file_upload']['error'][$f] == 0) {
                                if ($_FILES['file_upload']['size'][$f] > $max_file_size) {
                                    $str = "حجم تصویر انتخاب شده باید کمتر از 100 کیلوبایت باشد";
                                    continue; // Skip large files
                                } elseif (!in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)) {
                                    $str = "فرمت تصویر انتخاب شده مجاز نمی باشد";
                                    continue; // Skip invalid file formats
                                } elseif ($imageHeight > 200 || $imageWidth > 200) {
                                    $str = "اندازه تصویر انتخاب شده باید 1023 در 426 باشد";
                                    continue;
                                } else { // No error found! Move uploaded files
                                    if (move_uploaded_file($_FILES["file_upload"]["tmp_name"][$f], $path . $name)) {
                                        $count++; // Number of successfully uploaded files
                                        $str = $count . " تصویر با موفقیت آپلود شدند ";
                                    }
                                }
                            }
                        } else {
                            $str = "تصویری با این نام وجود دارد";
                        }
                    } else {
                        $str = "شما تصویری را انتخاب نکرده اید";
                    }
                }
            }
            ?>
            <div class="content">
                <?php
                if (isset($str)) {
                    echo $str;
                }
                ?>
                <form action="index.php" enctype="multipart/form-data" method="post">
                    <div>
                        <span><label>تصویری برای خودتان انتخاب کنید</label></span>
                        <span><label>اندازه تصویر انتخاب شده باید 200 در 200 باشد</label></span>

                        <div>
                            <input type="file" name="file_upload[]" multiple="multiple"/>
                        </div>
                    </div>
                    <br/>

                    <div>
                        <div class="buttons">
                            <button type="submit" name="submit">بارگذاری</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
        <div class="footer">
            <h4 style="text-align: center;padding: 20px;"><a href="http://www.iranganj.ir">تمامی حقوق متعلق به سایت
                    ایران گنج می باشد</a></h4>
        </div>
    </div>
</bod>
</html>

در این فایل ابتدا یک فرم برای آپلود فایل ایجاد می کنیم که در آموزش های قبلی نحوه ایجاد فرم را یاد گرفتیم و فقط در این قسمت به تفاوت هایی که وجود دارد اشاره می کنیم. اولن تفاوت در تگ فرم می باشد که حتما باید ویژگی enctype مورد نظر را باید برابر multipart/form-data قرار دهیم. همچنین یک تگ input داریم که نوع آن file می باشد چون می خواهیم عمل آپلود را انجام دهیم و نام آن نیز file_upload[] می باشد و دلیل اینکه براکت باز و بسته قرار دادیم این است که چون می خواهیم چند تصویر را همزمان آپلود کنیم باید اسامی تصاویر را به صورت آرایه دریافت کنیم. و نکته دیگری که باید رعایت کنیم این است که باید در تگ input حتما خصوصیت multiple را برابر multiple قرار دهیم تا بتوانیم همزمان چند تصویر را انتخاب کنیم. و یک دکمه نیز درست کردیم.

حال کدهای php  مورد نظر را توضیح می دهیم.

در ابتدا فرمت مورد نظر تصویر و اندازه فایل و حجم فایل و محل ذخیره فایل را در متغیرهای مشخص شده تعیین کردیم سپس چک می کنیم که آیا کاربر بر روی دکمه آپلود کلیک کرده یا نه، اگر کلیک کرده بود چون قرار است چند تصویر را همزمان آپلود کنیم از یک foreach استفاده می کنیم و تک تک فایل ها را آپلود می کنیم. در دستور foreach تک تک نام فایل ها را دریافت می کنیم و تک تک آنها را چک می کنیم.

در خط بعدی چک می کنیم که نام فایل خالی نباشد و اگر خالی بود در قسمت else پیغام می دهیم که کاربر تصویری را انتخاب نکرده است. و در خط بعدی نیز چک می کنیم که فایلی با این نام در مسیر دخیره سازی وجود نداشته باشد و در خطوط بعدی با استفاده از تابع getimagesize طول و عرض تصویر را بدست می آوریم و در متغیرهای مربوطه قرار می دهیم.

در خط بعدی چک می کنیم که خطایی وجود نداشته باشد، سپس حجم فایل را چک می کنیم که اگر بیشتر از مقدار تعیین شده بود به کاربر پغام دهیم. در خط بعدی فرمت تصویر مورد نظر را چک می کنیم که در فرمتهایی که تعیین کردیم باشد وگرنه به کاربر پیغام می دهیم. در خط بعدی نیز طول و عرض تصویر را چک می کنیم. در نهایت با استفاده از تابع move_uploaded_file تصویر مورد نظر را آپلود کرده و یکی به مقدار متغیر count اضافه می کنیم و سپس دوباره همین روال برای تصویر بعدی تکرار می شود تا تمامی تصاویر یک به یک آپلود شوند و در نهایت تعداد تصاویر آپلود شده را  به کاربر پیغام می دهیم.

توجه : تمامی فایل ها در سورس کد موجود می باشند.

دانلود

نویسنده حسین فتحی
گروه مطلب PHP
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۱۹ تیر ۱۳۹۴
منبع ایران گنج
تعداد نظرات ۰
قیمت کاربران VIP
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

نظر / سوال

Captcha

این صفحه را می‌پسندم