سلام به همگی، امروز با یک پست آموزشی دیگه از دنیای وردپرس و برنامه نویسی در خدمت همراهان عزیز هستیم. همونطور در عنوان متن اشاره شد، این پست اختصاص داره به آموزش آپلود فایل در php که در ۳ مرحله اصلی توضیح داده میشه…
مرحله اول، تعریف یک فرم html با ۲ ورودی از نوع های file و submit که در قطعه کد زیر آورده شده:
HTML
<form action="" method="post" enctype="multipart/form-data"> <input type="file" name="files[]" multiple="multiple" accept="image/*"> <input type="submit" value="آپلود کن!"> </form>
قطعه کد بالا، چند بخش مهم داره که این فرم رو از فرم های ساده دیگه متمایز میکنه. یکی از این موارد تعریف ویژگی enctype با مقدار multipart/form-data که مشخص میکنه این فرم مرتبط با کنترل آپلود. همچنین، input اول حتما باید از نوع file در نظر گرفته بشه و با تعریف ویژگی های multiple (ورودی همزمان از چند فایل) و accept (محدود سازی نوع فایل مورد قبول)، میشه چند تنظیم ساده رو به فرم اضافه کرد.
مشخص که این فرم، قرار یک سری داده رو با متد post ارسال کنه. بنابراین مرحله بعدی کار اختصاص داره به دریافت اطلاعات و پردازش اونها که برای انجام این کار نیاز به استفاده از کدنویسی php داریم:
PHP
<?php
$valid_formats = array("jpg", "png", "gif", "zip", "bmp"); // فایل های مجاز جهت آپلود
$max_file_size = 1024*100; //100 کیلوبایت
$path = "uploads/"; // فولدر مقصد
$count = 0; // متغیر شمارنده
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
// حلقه $_FILES برای اجرای تمامی فایل ها
foreach ($_FILES['files']['name'] as $f => $name) {
if ($_FILES['files']['error'][$f] == 4) {
continue; // پرش از فایل در صورت یافتن خطا
}
if ($_FILES['files']['error'][$f] == 0) {
if ($_FILES['files']['size'][$f] > $max_file_size) {
$message[] = "$name از حجمی بالاتر از مقدار مجاز برخوردار است.";
continue; // پرش در صورت داشتن حجم غیر مجاز
}
elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
$message[] = "$name از فرمت فایلی مجاز برای آپلود برخوردار نیست.";
continue; // پرش در صورت داشتن فرمت غیر مجاز
}
else{ // اگر هیچ خطایی یافت نشد، فایل را منتقل کن!
if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$name)) {
$count++; // شمارنده تعداد فایل های آپلود شده
}
}
}
}
}
?>توضیح متغیرهای استفاده شده در بخش بالا:
- متغیر valid_formats: آرایه ای از فرمت های مورد قبول که در شرط های پایین تر استفاده شده.
- متغیر max_file_size: محدود سازی حجم آپلود
- متغیر path: آدرس پوشه مقصد که فایل ها در اونجا آپلود میشن.
- متغیر count: شمارنده تعداد فایل های ارسالی در یک آپلود.
توضیح بقیه دستورات، در متن کدها کامنت گذاری شده و میتونید وظیفه هر خط رو در محل خودش مطالعه کنید.
تا اینجا، دیگه کار ارسال فایل ها تموم شده. فقط برای گام آخر باید پیغام وضعیت آپلود رو که در قطعه کد بالا مشخص کردیم، چاپ کنیم: (برای انجام این کار، میتونید از کد زیر در بالا یا پایین فرم html استفاده کنید.)
PHP
<?php
# پیغام خطا
if (isset($message)) {
foreach ($message as $msg) {
printf("<p class='status'>%s</p></ br>\n", $msg);
}
}
# پیغام موفقیت آمیز بودن بارگذاری
if($count !=0){
printf("<p class='status'>%d فایل با موفقیت اضافه شد.</p>\n", $count);
}
?>منبع : دنیای وردپرس و برنامه نویسی

با سلام :
بابت مطلب مفیدتون خیلی ممنون زیاد دنبال همچین چیزی میگشتم
فقط یه سوال :
میخوام موقع گرفتن خروجی پیغام به جای تعداد فایل اسم فایل رو بزنه ممنون میشم آموزشش رو قرار بدین
توسط siyavash
سلام، مشکلی نیست! بخش چاپ پیغام موفقیت آمیز رو به صورت زیر تغییر بدید:
if($count !=0){ foreach ($_FILES['files']['name'] as $prin_name) { printf("<p class='status'>%s با موفقیت اضافه شد</p></ br>\n", $prin_name); } }توسط علی میرزائی
لطفا جواب سوال بالا رو بدید. ممنون
توسط مهدی
سلام. خسته نباشید. ببخشید من با این روش یک فایل رو در هاست خودم آپلود میکنم اما بعد از آپلود لینک فایل رو به من نمیده! باید چکار کنیم تا لینک فایل رو هم بده؟
توسط مهدی
سلام
من خیلی استفاده کردم
ممنونم
توسط سهیل صادق بیان
قابلی نداشت سهیل جان {گل}
توسط علی میرزائی
خوب بود
توسط نقشه برداری
خوب بود
توسط طرحی وب سایت
با تشکر از سایت خوبتون عالی بود
امیدوارم همیشه موفق باشید……
توسط طرحی سایت
مرسی لطف کردین خیلی مفید بود
توسط دانلود
سلام
داداش علی
یه سوال داشتم در مورد وردپرس
من یه شرط داخل وردپرس می خواهم که دو تا تصویر اولم رو سایز 300 در 300 نمایش یده و بقیه رو 80 در 80 و هر موقع که تصویر جدید گذاشتم جایگزین بشه
مثل این تصویر :
http://static.farskids.co/1.jpgتوسط محمد حسین
سلام
آقا علی چی شد ؟
چنین شرطی وجود داره یا نه؟
توسط محمد حسین
سلام،
راه حلی که الآن به ذهنم میرسه استفاده از دو کوئری در صفحه است. به این صورت که:
1- مقدار posts_per_page رو در کوئری اول 2 بذارید و در داخل حلقه از تصویر شاخص 300 استفاده کنید.
2- در کوئری دوم، posts_per_page رو به تعداد دلخواه تنظیم کنید و به offset مقدار 2 بدید. (لازم به ذکر نیست که در این حلقه تصویر شاخص رو باید روی 80 تنظیم کنید.)
توسط علی میرزائی
دستت درد نکنه داداشی
میشه یه لطفی کنی و کدش رو بذاری اینجوری متوجه نمی شم ؟
ایشالا اومدی شیراز جبران کنم
توسط محمد حسین
دوباره سلام
این دکمه choose file هیچ راهی نداره که اسمش عوض بشه!!!
مرسی
توسط فرشته
آموزش مفیدی بود ممنون
توسط سایت عکس
من یه فایل اکسل دارم که باید کاربرام برش دارن و اطلاعاتشونو توش بنویسن و دوباره آپلودش کنن برام . حالا دو تا دکمه تعبیه کردم که یکیشو بزنن باید اون فایل اکسله دانلود شه و یکیشم که مال آپلوده
اون دانلودرو میخوام
مظورتونو متوجه نشدم من!!
توسط فرشته
اون فایل اکسل رو یه جایی آپلود کنید و در آخر لینکش رو برای کاربران قرار بدید.
توسط علی میرزائی
وای ببخشید من انقد سوال میپرسم
من آخه هنو دارم کلاس برنامه نویسی میرم زیاد وارد نیستم
خب حالا میخام مثلا یه فایل اکسل تو سی پنلم داشته باشم و کاربران بتونن اونو از سایتم دانلود کنن! و به راحتی همین آپلود
یعنی در واقع یه فرم اکسل دارم که میخام تو سایت بذارم برای ثبت نام
بعد مشتریان دانلودش کنند و اطلاعاتشونو پر کنند و دوباره آپلودش کنن!
آپلودشو که زحمتشو کشیدید حالا مونده دانلودش
توسط فرشته
اگه منظورتون لینک دانلود که میتونید از آدرس فایل استفاده کنید. در غیر این صورت توضیح کاملتری بدید.
توسط علی میرزائی
یه مشکل دیگه!!
من مثلا دوبار میخام این فایل رو آپلود کنم اما بار دوم over write میشه روی فایل اول
و من نمیخام این اتفاق بیفته
میخام مثل یه آرایه همه فایلا بمونه تو پوشم!
چیکار کنم!!
توسط فرشته
یه راه حل ساده، استفاده از تابع Date یا Time بین رشته name و path در تابع move_uploaded_file.
به عنوان مثال:
move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.date("M_j_Hms").$name)توسط علی میرزائی
یه چیز دیگه
من تو سی پنلم پوششو بذارم؟
تو خود فایل public_html??
یا توی پ.شه ای که فایل مورد نظرم توشه؟؟ آخه فایلای من پوشه پوشه و به صورت مجزاس
توسط فرشته
من دقیقا نمیدونم که مورد استفاده شما کجاست! اما اگه قرار به صورت یک صفحه مجزا از این اسکریپت استفاده بشه، میتونید از روش فایل در public_html استفاده کنید.
توسط علی میرزائی
سلام
ممنون بابت فایل مفیدتون
من یه مشکلی دارم اونم اینه که میخام این آپلود فایل رو تو صفحه ی مشتریانم بذارم تا یه فایل اکسل رو آپلود کنن
تا اینجاش مشکلی ندارم
اما نمیدونم چرا رو css اش مشکل دارم یعنی کلا از جاش تکون نمیخوذه ا اینکه تنظیمات css رو هم تغییر میدم
نمیدونم مشکلش چیه
اگه لازمه کدمو براتون بفرستم تا ببینید؟؟
ممنون میشم
توسط فرشته
سلام،
فک میکنم یه جا از مقدار auto در پروپرتی margin استفاده شده. ممکنه مشکلتون از اون باشه.
در هر صورت، استایلی که در این اسکریپت پیوست شده، بیشتر جنبه آزمایشی داره و حتما لازم نیست که عینا از اون استفاده کنید.
توسط علی میرزائی
سلام آقا علی
یه سوال داشتم ؟
آقا شما پلیری میشناسید که فرمت OGG رو بتونه داخل سایت وردپرسی پخش کند ؟
خودم دارم فقط mp3 رو جواب میده ؟
توسط محمد حسین
سلام،
تگ audio در html5، این پسوند رو قبول میکنه:
http://tiny.alimir.ir/D1با اینحال میتونید افزونه زیر رو هم امتحان کنید:
http://tiny.alimir.ir/BL/توسط علی میرزائی
میشه بگید کارش چیه؟
توسط سهیل
از عنوان مشخص، با استفاده از این آموزش میتونید فایل ها رو با کمک php در یک هاست ذخیره کنید.
توسط علی میرزائی
با تشکر مطلب جالبی بود
توسط استخر پیش ساخته
سلام . خسته نباشید دوست عزیز . مطلب مفیدی بود .استفاده کردم .موفق باشید
توسط یاسر داودفر