بستن منو
۱۹۸
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مباحث اولیه برای آشنایی با PHP
مباحث اولیه برای آشنایی با PHP
16
آرایه ها در PHP
آرایه ها در PHP
23
انواع متغیرها و تبدیلات متغیرها در PHP
انواع متغیرها و تبدیلات متغیرها در PHP
13
چاپ متن در خروجی، در PHP
چاپ متن در خروجی، در PHP
3
رشته ها (متن ها - strings) و کاراکترها در PHP
رشته ها (متن ها - strings) و کاراکترها در PHP
25
حلقه ها (Loop)، در PHP
حلقه ها (Loop)، در PHP
3
توابع در PHP
توابع در PHP
3
کوکی ها (cookie) در PHP
کوکی ها (cookie) در PHP
3
تاریخ و زمان در PHP
تاریخ و زمان در PHP
4
توقف موقتی یا کامل اجرای کدها، در PHP
توقف موقتی یا کامل اجرای کدها، در PHP
2
عملیات های ریاضی در PHP
عملیات های ریاضی در PHP
14
فرم ها در PHP
فرم ها در PHP
7
کار با عکس ها در PHP
کار با عکس ها در PHP
7
کار با فایل ها و پوشه ها (folder) در PHP
کار با فایل ها و پوشه ها (folder) در PHP
37
کار با ایمیل در PHP
کار با ایمیل در PHP
1
برنامه نویسی شیء گرا (OOP) در PHP
برنامه نویسی شیء گرا (OOP) در PHP
4
Extension ها (ماژول ها - Module)، در PHP
Extension ها (ماژول ها - Module)، در PHP
2
پردازش فایل های XML ، در PHP
پردازش فایل های XML ، در PHP
1
امنیت در PHP
امنیت در PHP
1
پیاده سازی درگاه های پرداخت آنلاین، با کدهای PHP
پیاده سازی درگاه های پرداخت آنلاین، با کدهای PHP
1
خطاها و خطایابی، در PHP
خطاها و خطایابی، در PHP
1
حافظه (Memory)، در PHP
حافظه (Memory)، در PHP
3
کار با نرم افزار شبیه ساز سرور wampserver
کار با نرم افزار شبیه ساز سرور wampserver
1
کار با نرم افزار شبیه ساز سرور XAMPP
کار با نرم افزار شبیه ساز سرور XAMPP
1
مشاهده مشخصات کلی PHP
مشاهده مشخصات کلی PHP
2
تغییر مشخصات کلی PHP
تغییر مشخصات کلی PHP
1
کتابخانه CURL در PHP
کتابخانه CURL در PHP
2
ساختار JSON ، در PHP
ساختار JSON ، در PHP
2
مباحث عمومی در PHP
مباحث عمومی در PHP
15

×

دانلود فروشگاه اندروید کلیدستان

478

نویسنده

علیرضا گلمکانی ( admin )

شماره کلید
دسته کلید - دسته بندی

آپلود (upload) همزمان چند فایل، در PHP

در مبحثی دیگر، کدهایی ارائه دادیم که برای ساخت یک فرم بودند که با آن، کاربر می توانست یک فایل را آپلود کند. اما گاهی نیاز داریم که چندین فایل را به طور همزمان آپلود کنیم، برای این منظور، ابتدا کدهای مربوط به آن مبحث را که برای آپلود یک فایل به کار می رود، در اینجا می نویسیم و سپس تغییرات لازم را به آنها اعمال می کنیم تا به طور همزمان، کاربر بتواند چندین فایل را آپلود کند (اینگونه، تفاوت بین حالت آپلود یک فایل با حالت آپلود همزمان چند فایل را هم بهتر متوجه خواهید شد).

برای قسمت آپلود، ابتدا یک فرم HTML می سازیم و سپس اطلاعات حاصل از فرم را به یک فایل PHP می فرستیم تا بر روی آن اطلاعات، پردازش کند (این شیوه کلی ساخت فرم ها است). بنابراین یک فایل با نامی دلخواه می سازیم و کدهای زیر را درون آن می نویسیم (چون یک فرم HTML است، پس می تواند پسوند فایل، html یا php باشد) :


<html>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

همان طور که از کد بالا مشخص است، این فرم، اطلاعات را با روش POST ، به فایل upload_file.php می فرستد تا این فایل، بر روی اطلاعات دریافتی، پردازش کند. مشخصه enctype برای فرم، مشخص می کند که نوع اطلاعاتی که کاربر ارسال می کند، چه می باشد. با انتخاب multipart/form-data برای این مشخصه، اعلام کرده ایم که اطلاعات ارسالی، به صورت اطلاعات دودویی (binary data) است.

درون تگ input ، مشخصه type را برابر file قرار داده ایم تا اعلام کنیم که نوع ورودی، به صورت فایل می باشد. بنابراین درون فرم، یک دکمه browse به کاربر نمایش داده می شود تا با آن بتواند فایل مورد نظر را از کامپیوتر خود انتخاب نماید.

یک فایل با نام upload_file.php می سازیم و کدهای زیر را درون آن می نویسیم :


<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 80000)
&& in_array($extension, $allowedExts)){
    if ($_FILES["file"]["error"] > 0){
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }else{
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

        if (file_exists("upload/" . $_FILES["file"]["name"])){
            echo $_FILES["file"]["name"] . " already exists. ";
        }else{
            move_uploaded_file($_FILES["file"]["tmp_name"],
            "upload/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        }
    }
}else{
    echo "Invalid file";
}
?>

قبلا در مبحثی دیگر، این کدها را شرح داده ایم، تنها به طور مختصر، یادآوری می کنیم نوع فایل را به صورت عکس در نظر گرفته ایم (با چند پسوند که مشخص کرده ایم) و همچنین یک حداکثر اندازه نیز برای فایل در نظر گرفته ایم، بنابراین اگر فایل انتخاب شده توسط کاربر، با این مشخصات، تطابق نداشته باشد، فایل آپلود نخواهد شد. دقت داشته باشید که حتما آپلود فایل توسط کاربر را باید تنها به یک یا چند نوع فایل، محدود کنیم، در غیر این صورت، ممکن است یک هکر، یک صفحه شامل کد را در سرور آپلود کند و سپس با وارد کردن آدرس آن فایل، در مرورگر اینترنت خود، یک سری کد مخرب، در سرور شما اجرا گردد. همچنین، در کد بالا، پوشه ای با نام upload برای محل ذخیره فایل ها در نظر گرفته شده است که باید آن را بسازید. همچنین دقت داشته باشید که $_FILE یک متغیر فوق سراسری می باشد که اطلاعات مربوط به فایلی که آپلود می کنیم، در آن ذخیره می شود و با کدها، این اطلاعات را از آن دریافت کرده و فایل را در سرور ذخیره می کنیم.

تغییر کدهای PHP ، برای ایجاد امکان آپلود همزمان چند فایل :

اکنون فرض کنید که می خواهیم به طور همزمان، کاربر بتواند 3 فایل را انتخاب کند، برای این منظور، کدهای مربوط به فرم را که در ابتدا به صورت زیر بوده است :


<html>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

به این شکل، تغییر می دهیم :


<html>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<input type="file" name="file[]" id="file"><br>
<input type="file" name="file[]" id="file"><br>
<input type="file" name="file[]" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

با مقایسه کدها، متوجه خواهید شد که قبلا تنها یک تگ input از نوع file داشتیم، اما اکنون 3 تا داریم. همچنین، مشخصه name برای آنها، دیگر برابر file نیست، بلکه برابر file[] می باشد. همچنین، تگ label را حذف کرده ایم (اهمیتی ندارد، ترجیح دادیم که برای خلوت تر شدن کدها، آن را حذف کنیم).

شکل فرم، به صورت زیر می باشد :

آپلود (upload) همزمان چند فایل، در PHP

کدهای فایل پردازش کننده فرم، قبلا به صورت زیر بود (برای آپلود یک فایل) :


<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 80000)
&& in_array($extension, $allowedExts)){
    if ($_FILES["file"]["error"] > 0){
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }else{
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

        if (file_exists("upload/" . $_FILES["file"]["name"])){
            echo $_FILES["file"]["name"] . " already exists. ";
        }else{
            move_uploaded_file($_FILES["file"]["tmp_name"],
            "upload/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        }
    }
}else{
    echo "Invalid file";
}
?>

و ما آن را به صورت زیر تغییر می دهیم (برای آپلود همزمان چند فایل) :


<?php
for($i=0;$i<count($_FILES["file"]["name"]);$i++){
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"][$i]);
    $extension = end($temp);
    if ((($_FILES["file"]["type"][$i] == "image/gif")
    || ($_FILES["file"]["type"][$i] == "image/jpeg")
    || ($_FILES["file"]["type"][$i] == "image/jpg")
    || ($_FILES["file"]["type"][$i] == "image/pjpeg")
    || ($_FILES["file"]["type"][$i] == "image/x-png")
    || ($_FILES["file"]["type"][$i] == "image/png"))
    && ($_FILES["file"]["size"][$i] < 80000)
    && in_array($extension, $allowedExts)){
        if ($_FILES["file"]["error"][$i] > 0){
            echo "Return Code: " . $_FILES["file"]["error"][$i] . "<br>";
        }else{
            echo "Upload: " . $_FILES["file"]["name"][$i] . "<br>";
            echo "Type: " . $_FILES["file"]["type"][$i] . "<br>";
            echo "Size: " . ($_FILES["file"]["size"][$i] / 1024) . " kB<br>";
            echo "Temp file: " . $_FILES["file"]["tmp_name"][$i] . "<br>";

            if (file_exists("upload/" . $_FILES["file"]["name"][$i])){
                echo $_FILES["file"]["name"][$i] . " already exists. ";
            }else{
                move_uploaded_file($_FILES["file"]["tmp_name"][$i],
                "upload/" . $_FILES["file"]["name"][$i]);
                echo "Stored in: " . "upload/" . $_FILES["file"]["name"][$i];
            }
        }
    }else{
        echo "Invalid file";
    }
        echo "<br><br>";
}
?>

اولین تغییر، ساخت یک حلقه for برای کل کدها می باشد :


for($i=0;$i<count($_FILES["file"]["name"]);$i++){

این حلقه، به تعداد فایل هایی که آپلود می شود، اجرا خواهد شد (مثلا چون 3 فایل را آپلود می کنیم، بنابراین کدهای درون حلقه for ، سه بار اجرا می شوند).

علاوه بر این، به انتهای تمامی عبارت هایی که به متغیر فوق سراسری $_FILE ارجاع داده اند، عبارت [$i] نیز افزوده شده است (زیرا قبلا تنها یک فایل داشتیم، اما اکنون چند فایل داریم و باید مشخص کنیم که اطلاعات مربوط به کدام فایل را می خواهیم از متغیر فوق سراسری $_FILE فراخوانی کنیم).

کپی برداری از محتوای سایت کلیدستان، ممنوع بوده و پیگرد قانونی دارد. (تنها استفاده شخصی کاربر، مجاز است) (کپی برداری توسط سایر وب سایت ها = حرام) (بیشتر بدانید)

خوانده شد
جستجو در عنوان کلیدها :
جستجو توسط گوگل :
پرسیدن سوال :
ارسال نظر :
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)

دسترسی سریع

×

شماره کلید


کلید
×

شماره دسته کلید


دسته کلید
×

جستجو


جستجو

راهنمای توابع PHP

راهنمای توابع PHP بر اساس حرف اول تابع :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

بستن منو
۵۳۶
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مجموعه ویدئوهای آموزشی PHP - مجموعه PHP Tutorials - از thenewboston.com
مجموعه ویدئوهای آموزشی PHP - مجموعه PHP Tutorials - از thenewboston.com
200
مجموعه ویدئوهای آموزشی PHP - مجموعه PHP Tutorials
مجموعه ویدئوهای آموزشی PHP - مجموعه PHP Tutorials
69
مجموعه ویدئوهای آموزشی PHP برای مبتدیان - مجموعه PHP beginners tutorials
مجموعه ویدئوهای آموزشی PHP برای مبتدیان - مجموعه PHP beginners tutorials
55
مجموعه ویدئوهای آموزشی ساخت دانلودر اینستاگرام با استفاده از PHP - مجموعه PHP Instagram Downloader Tutorial - از thenewboston.com
مجموعه ویدئوهای آموزشی ساخت دانلودر اینستاگرام با استفاده از PHP - مجموعه PHP Instagram Downloader Tutorial - از thenewboston.com
10
مجموعه ویدئوهای آموزشی PHP Stock Market Analyzer - مجموعه PHP Stock Market Analyzer - از thenewboston.com
مجموعه ویدئوهای آموزشی PHP Stock Market Analyzer - مجموعه PHP Stock Market Analyzer - از thenewboston.com
20
مجموعه ویدئوهای آموزشی امنیت در PHP - مجموعه PHP Security
مجموعه ویدئوهای آموزشی امنیت در PHP - مجموعه PHP Security
10
مجموعه ویدئوهای آموزشی امنیت در PHP - مجموعه PHP Security
مجموعه ویدئوهای آموزشی امنیت در PHP - مجموعه PHP Security
6
مجموعه ویدئوهای آموزشی برنامه نویسی شیء گرا (OOP) در PHP - مجموعه PHP Object Oriented Programming (OOP)
مجموعه ویدئوهای آموزشی برنامه نویسی شیء گرا (OOP) در PHP - مجموعه PHP Object Oriented Programming (OOP)
13
مجموعه ویدئوهای آموزشی ساخت شبکه اجتماعی، با استفاده از PHP - مجموعه Social Network with PHP
مجموعه ویدئوهای آموزشی ساخت شبکه اجتماعی، با استفاده از PHP - مجموعه Social Network with PHP
37
مجموعه ویدئوهای آموزشی ساخت سیستم شناسایی کاربران، با استفاده از PHP - مجموعه PHP Authentication System
مجموعه ویدئوهای آموزشی ساخت سیستم شناسایی کاربران، با استفاده از PHP - مجموعه PHP Authentication System
33
مجموعه ویدئوهای آموزشی ساخت آپلودر فایل (برای چندین فایل) با امکان نمایش پیشرفت آپلود، با استفاده از AJAX و بر اساس PHP - مجموعه AJAX Multiple File Uploader & Progress Bar
مجموعه ویدئوهای آموزشی ساخت آپلودر فایل (برای چندین فایل) با امکان نمایش پیشرفت آپلود، با استفاده از AJAX و بر اساس PHP - مجموعه AJAX Multiple File Uploader & Progress Bar
10
مجموعه ویدئوهای آموزشی ثبت نام و ورود و خروج کاربران، در PHP - مجموعه Register & Login
مجموعه ویدئوهای آموزشی ثبت نام و ورود و خروج کاربران، در PHP - مجموعه Register & Login
47
مجموعه ویدئوهای آموزشی PHP و MySQL ، با استفاده از MySQLi - مجموعه PHP and MySQL with MySQLi
مجموعه ویدئوهای آموزشی PHP و MySQL ، با استفاده از MySQLi - مجموعه PHP and MySQL with MySQLi
9
مجموعه ویدئوهای آموزشی ساخت فایل PDF از HTML و CSS ، در PHP - مجموعه Generating PDF files from HTML and CSS
مجموعه ویدئوهای آموزشی ساخت فایل PDF از HTML و CSS ، در PHP - مجموعه Generating PDF files from HTML and CSS
7
بستن منو
۵۴
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مباحث اولیه برای آشنایی با MySQL
مباحث اولیه برای آشنایی با MySQL
15
خواندن اطلاعات کلی پایگاه های داده (databases)، در MySQL
خواندن اطلاعات کلی پایگاه های داده (databases)، در MySQL
3
خواندن اطلاعات از جدول ها (tables)، در MySQL
خواندن اطلاعات از جدول ها (tables)، در MySQL
14
تغییر دادن اطلاعات جدول ها (tables)، در MySQL
تغییر دادن اطلاعات جدول ها (tables)، در MySQL
5
تبدیل های مرتبط با پایگاه داده MySQL
تبدیل های مرتبط با پایگاه داده MySQL
1
query های آماده برای ساخت جدول های دارای اطلاعات، برای تست های کدنویسی، در MySQL
query های آماده برای ساخت جدول های دارای اطلاعات، برای تست های کدنویسی، در MySQL
2
کار با اعداد، در MySQL
کار با اعداد، در MySQL
3
استفاده از کلاس mysqli در PHP ، برای کار با پایگاه داده MySQL
استفاده از کلاس mysqli در PHP ، برای کار با پایگاه داده MySQL
4
برنامه phpMyAdmin ، برای کار با پایگاه داده MySQL
برنامه phpMyAdmin ، برای کار با پایگاه داده MySQL
2
مباحث عمومی در MySQL
مباحث عمومی در MySQL
5
بستن منو
۳۳
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مجموعه ویدئوهای آموزشی پایگاه داده MySQL - مجموعه MySQL Database Tutorial - از thenewboston.com
مجموعه ویدئوهای آموزشی پایگاه داده MySQL - مجموعه MySQL Database Tutorial - از thenewboston.com
33
بستن منو
۸۰
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مباحث اولیه برای آشنایی با HTML
مباحث اولیه برای آشنایی با HTML
24
نمایش متن، در HTML
نمایش متن، در HTML
5
نمایش عکس، در HTML
نمایش عکس، در HTML
6
لینک ها (Link)، در HTML
لینک ها (Link)، در HTML
1
لیست ها (List)، در HTML
لیست ها (List)، در HTML
1
جدول ها (Table)، در HTML
جدول ها (Table)، در HTML
2
فرم ها (Form)، در HTML
فرم ها (Form)، در HTML
18
تعیین مشخصات کلی صفحه، در HTML
تعیین مشخصات کلی صفحه، در HTML
5
عناصر گرافیکی، در HTML
عناصر گرافیکی، در HTML
1
رنگ ها (Color) و تعیین رنگ، در HTML
رنگ ها (Color) و تعیین رنگ، در HTML
1
دکمه ها (Button)، در HTML
دکمه ها (Button)، در HTML
2
پخش صدا (Audio)، در HTML
پخش صدا (Audio)، در HTML
1
کار با کیبورد (Keyboard)، در HTML
کار با کیبورد (Keyboard)، در HTML
2
مباحث عمومی، در HTML
مباحث عمومی، در HTML
11