دسته بندی
درگاه پرداخت
paypaad
استفاده از مطالب و خدمات «وبگو» رایگان است، درگاه پرداخت صرفا برای مواردی است که نیاز به پرداخت هزینه دارند.
دانلود رایگان 8 اشتباه خطرناک برنامه نویسان
article

آموزش نحوه آپلود فایل با php و آژاکس (ajax)

ajax-php-file-upload

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

فرایند آپلود فایل در وب


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

چگونه یک فایل را با آژاکس آپلود کنیم؟


اگرچه فناوری آژاکس از بسیاری جنبه ها پیشرفت کرده است و می توان به کمک آن مقادیر موجود در فرم های html را بدون رفرش صفحه به سرور ارسال کرد، اما واقعیت این است که در مورد ارسال فایل، هنوز به استاندارهای لازم نرسیده است، به این دلیل است که برخی توابع تعریف شده آن، برای برخی مرورگرها قابل فهم و پشتیبانی نیست و نمی توان چندان بر آن متکی بود، از اینرو،  کنسرسیوم جهانی وب (W3C) در حال تکمیل کردن نسل جدیدی از  XMLHttpRequest با نام  XMLHttpRequest2 است تا در این نسخه استاندار انتقال فایل نیز در بستر آژاکس به درستی تعریف شود، به هر صورت برای کاربران، گزینه های جایگزین دیگری وجود دارد، از جمله استفاده از کتابخانه های جاوا اسکریپتی نظیر جی کئوری (jQuery) و  موتولز (Mootools)، که با جلوه ها و محیط کاربری خیلی زیبایی می توانند فایل ها را آپلود کنند (البته مشکل همیشگی این نوع کتابخانه ها مخصوصا برای کاربران با سرعت و کیفیت پائین اینترنت، حجم آنها است).
در این آموزش ما از روشی شبیه سازی شده بر اساس فرایند آژاکسی ولی مبتنی بر جاوا اسکریپت و تکنیک iframe استفاده خواهیم کرد.

کد html برای آپلود فایل


همانطور که گفتیم قبل از هرچیز برای آپلود فایل در وب، به فرم مبتنی بر کدهای html نیاز داریم، بدین منظور فرم زیر و سایر تنظیمات html را ایجاد می کنیم.
<form action="php-ajax-upload.php" method="post" enctype="multipart/form-data" target="upload-target" onsubmit="upload_start();">
<label for="user-file"></label>
<input type="file" id="user-file" name="user-file" />
<input type="submit" value="آپلود فایل" />
</form>
<div id="upload-process"><img src="loading.gif" height="16" width="16" alt="loading" /> در حال پردازش...</div>
<div id="upload-form"></div>
<iframe id="upload-target" name="upload-target" class="frame"></iframe>
توضیح:
- در قسمت action فرم، آدرس فایل php مقصد را که فایل های آپلود شده ما را پردازش و مدیریت خواهد کرد، وارد می کنیم.
- در قسمت متد ارسال فایل، از متد post استفاده خواهیم کرد.
- بخش مربوط به enctype و مقادیر multipart/form-data این امکان را به مرورگر خواهد داد تا فایل را به صورتی باینری و تکه تکه به سرور انتقال دهد، در حالت معمول و به طور پیش فرض، مرورگر از application/x-www-form-urlencoded استفاده می کند که برای انتقال فایل مناسب نیست.
- قسمت مربوط به target به جهت استفاده از تکنیک iframe قرار داده شده است که مقادیر آن در واقع آی دی iframe است، گفتیم که در حال حاضر آژاکس به خودی خود نمی تواند فایل ها را به طور کامل و در تمام مرورگرها آپلود کند و باید از فریم ورک ها (Ajax Frameworks) یا روش های شبیه سازی شده استفاده کنیم.
- قسمت مربوط به onsubmit و مقادیر آن مربوط به فراخوانی تابع جاوا اسکریپتی است که هنگام ارسال فرم، اجرا می شود و وظیفه مدیریت نمایش پیام های در حال پردازش و پاسخ سرور را دارد.
- برای ارسال فایل باید از input و نوع file بدین منظور استفاده کنیم، ذکر این نکته لازم است که مقادیر دکمه انتخاب فایل (choose file)، به صورت پیش فرض توسط مرورگرها پردازش می شود و برای تغییر آن باید از تکنیک css و جاوا اسکریپت استفاده کرد.
- نهایتا نیز با یک دکمه از نوع submit فرم را ارسال می کنیم، نکته مهم در اینجا این است که نوع دکمه ارسال فایل باید حتما submit باشد، چرا که ما پیش تر برای اجرای تابع جاوا اسکریپتی خود از رویداد onsubmit استفاده کرده ایم.
- بلاک های div که در پائین فرم ایجاد کرده ایم، برای مدیریت نمایش پیام در حال پردازش و نمایش پیغام خطا یا موفقیت آمیز بودن آپلود است.
- iframe را نیز برای دریافت پیام سرور، بعد از آپلود فایل، ایجاد کرده ایم.

کد css و جاوا اسکریپت


برای اینکه برنامه ما به درستی کار کند، باید تنظیمات و کنترل کامل تری روی آن اعمال کنیم، بدین منظور از کدهای css و جاوا اسکریپت (Javascript) به شکل زیر استفاده می کنیم.
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
a{
    text-decoration:none;
    color:#06C;
}
a:hover{
    color:#666;
}
.ok {
    display:block;
    padding:4px;
    border:0px #666 solid;
    color:#090;
    width:300px;
}
.error {
    display:block;
    padding:4px;
    border:0px #666 solid;
    color:#C00;
    width:300px;    
}
#upload-process{
    z-index:1000;
    visibility:hidden;
}
.frame{
    width:300px;
    height:100px;
    border:0px;    
}
</style>
<script type="text/javascript">
//<![CDATA[
function upload_start(){
      document.getElementById('upload-process').style.visibility = 'visible';
      return true;
}

function upload_end(check_upload){
      var server_response = '';
      if (check_upload == 1){
         server_response = '<span class="ok">فایل با موفقیت آپلود شد!</span>';
      }
      else {
         server_response = '<span class="error">انتقال فایل به سرور انجام نشد!</span>';
      }
      document.getElementById('upload-process').style.visibility = 'hidden';
      document.getElementById('upload-form').innerHTML = server_response;
      return true;   
}
//]]>
</script>
توضیح:
- فایل css ما، تنظیمات مربوط به ظاهر عناصر را مدیریت خواهد کرد و با دقت در مقادیر کلاس ها و آی دی، به راحتی می توانید از خواص آنها مطلع شوید.
- کد جاوا اسکریپت بالا، دارای دو تابع ساده است، تابع اول با نام upload_start با ارسال فرم، شروع می شود و استایل عنصر با آی دی upload-process را به حالت مرئی یا visible تبدیل می کند، در تابع دوم upload_end، یک عدد که از کد php دریافت می شود را بررسی کرده و متناسب با آن پیام و اطلاعاتی به کاربر نشان داده می شود، در اینجا از innerHTML برای نمایش اطلاعات استفاده کرده ایم.
ajax-file-uploading.jpg

کد php برای پردازش فایل آپلود شده


پس از اینکه کاربر فایل خود را ارسال می کند، در سمت سرور، باید کدی داشته باشیم که بتواند فایل آپلود شده را مدیریت کند، در php متغیر ازپیش تعریف شده یا (Predefined Variable) با نام  FILES وجود دارد که بدین منظور مورد استفاده قرار می گیرد، قبل از توضیح موارد، اجازه دهید فایل را با هم ملاحظه کنیم.
<?php
//تعیین فرمت یا اندازه مجاز و سایر پارامترها
if ($_FILES["user-file"]["type"] == "image/jpeg" && $_FILES["user-file"]["size"] < 1000000) {
    //بررسی سایر خطاهای سرور
    if ($_FILES["user-file"]["error"] > 0){
        echo "<div class="server">خطا: " . $_FILES["user-file"]["error"] . "</div><br />";
        $check_result = 0;
        }
    //بررسی وجود یا عدم وجود فایل با نام مشابه در سرور    
    else{
        if (file_exists("user-upload/" . $_FILES["user-file"]["name"])){
            echo "<div class="server">این فایل در حال حاضر وجود دارد! <br /><br />".$_FILES["user-file"]["name"]. "</div><br />";
            $check_result = 0;        
            }
        //انتقال و ذخیره فایل در سرور    
        else{          
            move_uploaded_file($_FILES["user-file"]["tmp_name"],"user-upload/" . $_FILES["user-file"]["name"]);
            echo "فایل: " . $_FILES["user-file"]["name"] . "<br />";
            echo "نوع: " . $_FILES["user-file"]["type"] . "<br />";
            echo "اندازه: " . ($_FILES["user-file"]["size"] / 1024) . " Kb<br />";
            echo "دایرکتوری: " . "user-upload/" . $_FILES["user-file"]["name"]. "<br />";
            $check_result = 1;        
            }
    }
}
//خطای تعیین فرمت یا اندازه مجاز و سایر پارامترها
else{
    if($_FILES["user-file"]["size"] > 1000000){
        echo "<div class="server">حجم فایل خیلی زیاد است!</div>";
    }
    else{
        echo "<div class="server">فرمت فایل مجاز نیست!</div>";
    }
    $check_result = 0;
}
?>
توضیح:
- همانطور که گفتیم، برای دریافت یک فایل آپلود شده در php از متغیر از پیش تعریف شده FILES استفاده می کنیم، مقادیر اول این متغیر در واقع نام فیلدی است که فایل از آن ارسال می شود، مقادیر دوم تنظیمات مروبط به فایل آپلود شده است.
- تنظیمات فایل آپلود شده می تواند شامل موارد زیر باشد:
<?php
//نام فایل آپلود شده
$_FILES['user-file']['name'];
//نوع فایل مانند image/jpeg
$_FILES['user-file']['type'];
//حجم فایل به بایت
$_FILES['user-file']['size'];
//نام موقت فایل در سرور
$_FILES['user-file']['tmp_name'];
//شماره خطای برگردانده شده توسط سرور
$_FILES['user-file']['error'];
?>
- خطاهای مربوط به کار با فایل، اعدادی از 1 تا 8 هستند، اگر همه چیز درست باشد، عدد صفر برگردانده می شود، در زیر به طور مختصر به این خطاها اشاره می کنیم:
UPLOAD_ERR_OK: عدد صفر برگردانده می شود و این به معنی عدم خطا است.
UPLOAD_ERR_INI_SIZE: عدد 1 برگردانده می شود، فایل آپلود شده از حداکثر حجم تنظیم شده در php.ini بیشتر است.
UPLOAD_ERR_FORM_SIZE: عدد 2 برگردانده می شود، فایل آپلود شده از حداکثر حجم تنظیم شده در فرم html بیشتر است.
UPLOAD_ERR_PARTIAL: عدد 3 برگردانده می شود، فایل به صورت ناقص آپلود شده است.
UPLOAD_ERR_NO_FILE: عدد 4 برگردانده می شود، هیچ فایلی آپلود نشد.
UPLOAD_ERR_EMPTY: عدد 5 برگردانده می شود، فایل آپلود شده صفر بایت است یا فیلد خالی است.
UPLOAD_ERR_NO_TMP_DIR: عدد 6 برگردانده می شود (تنها در نسخه 4.3.10 و بالاتر)، مفسر php نمی تواند پوشه tmp را پیدا کند.
UPLOAD_ERR_CANT_WRITE: عدد 7 برگردانده می شود (تنها در نسخه 5.1.0 و بالاتر)، مفسر php نمی تواند فایل را ذخیره کند.
UPLOAD_ERR_EXTENSION: عدد 8 برگردانده می شود (تنها در نسخه 5.2.0 و بالاتر)، یکی از الحاقات php، مانع آپلود فایل شده است، استفاده از ()phpinfo ممکن است به رفع مشکل کمک کند.
- تابع file_exists بررسی می کند که آیا فایل ارسال شده از قبل در دایرکتوری مورد نظر وجود دارد یا خیر.
- اگر همه چیز درست باشد، نهایتا php با تابع move_uploaded_file، فایل را در دایرکتوری مورد نظر ذخیره می کند.

دانلود کد آپلود فایل با php به شیوه آژاکسی


در زیر کدهای بالا را به اضافه تنظیماتی کامل تر، در یک بسته جهت دانلود قرار داده ایم، پس از دریافت فایل کافی است آن را روی لوکال هاست اجرا کنید.
دانلود کد آپلود فایل با php به شیوه آژاکسی - حجم: کمتر از 5 کیلوبایت
نکته: این برنامه صرفا جنبه آموزشی داشته و استفاده از آن بدون تسلط بر php و توابع مربوط به فایل، توصیه نمی شود.
sectionدسته بندی: آموزش کاربردی » Ajax
related مطالب بیشتر:
» نمایش داینامیک و صفحه به صفحه مطالب با آژاکس
» نمایش نتایج پایگاه داده و فایل php با آژاکس (ajax)
» نمایش زنده آمار و اطلاعات با آژاکس (Ajax)
» ارسال اطلاعات فرم با آژاکس (ajax) و نمایش پیام در حال پردازش (loading)
» لیست داینامیک پیشنهاد کلمات، مبتنی بر آژاکس، php و mysql
commentنظرات (۶۸ یادداشت برای این مطلب ارسال شده است)
نویسنده: هادی
زمان: ۱۲:۴۲:۴۷ - تاریخ: ۱۳۹۱/۰۴/۱۰
سلام با تشکر از آموزشتان در قسمت نوع فایل چگونه می توانم پسوند های زیپ را اضافه کنم
پاسخ: 
سلام
در قسمت تعیین فرمت، با توجه به نوع فایل zip، از type های زیر استفاده کنید:
application/zip
application/x-zip-compressed
multipart/x-zip
application/x-compressed
application/octet-stream
معمولا application/zip کافی خواهد بود با این حال برای اطمینان، از سایر type ها هم می توانید استفاده کنید.
نویسنده: هادی
زمان: ۲۲:۳۵:۰۹ - تاریخ: ۱۳۹۱/۰۴/۱۱
سلام
سپاس از جوابتان بله مورد اول جواب داد با تشکر
سوالی دارم البته مربوط به این قسمت نمیشه
1- فرمی طراحی نمودم که درصورتی که فیلدها پر نشوند در صفحه دیگری پیغام اجبار به پر کردن موارد را بدهد حال چگونه همین پیغام در کنار همان فیلد ها نمایش داده شود و به صفحه دیگر ارجاع داده نشود؟
2- در فرممان 3 مورد را مشخص نموده ایم که میخواهیم در صورت انتخاب هرکدام جمع آن موارد بصورت مبلغی که مشخص می شود در محل بخصوصش ثبت شود چه دستوری باید نوشت؟
3- با هر تغییری که داده ام در دیتابیس mysql فارسی ثبت نمی شود درحالی که شیوه ثبت را utf8 یا latin1 قرار دادم ولی تاثیری نداشت.
پاسخ: 
سلام
در مورد سوال اول، دو راه وجود دارد، استفاده از آژاکس یا استفاده از جاوا اسکریپت و رویداد های onchange یا onfocus و عنصر document.getElementById، جمع و تفریق هم با برنامه نویسی جاوا اسکریپت به راحتی میسر است، نمونه کد را در لینک زیر مشاهده کنید:
بررسی اعتبار فیلد و جمع و تفریق با جاوا اسکریپت
در مورد سوال سوم، دیتابیس به طور معمول حروف فارسی را به صورت ناخوانا ذخیره می کند، اگر در هنگام خروجی و نمایش، حروف به فارسی هستند، پس مشکلی نیست، تا آنجا که ما می دانیم، برای تمام سایت های فارسی زبان، به همین شکل است!
نویسنده: هادی
زمان: ۱۲:۲۴:۰۶ - تاریخ: ۱۳۹۱/۰۴/۱۲
سلام مجدد دیتابیس حروف فارسی را به شکل دیگه نمایش میده و خروجی اش هم همینطور بطور مثال:
هادی برای اسم وارد شده بصورت فارسی هست.
پاسخ: 
بهتر است برای دیتابیس، جداول و ردیف ها از utf8_general_ci برای COLLATE ها استفاده کنید (قبل از اینکه اطلاعاتی ذخیره شود)، در تمام صفحات HTML نیز متاتگ زیر را در قسمت تگ head قرار دهید:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
معمولا نباید مشکل دیگری باشد.
نویسنده: هادی
زمان: ۱۲:۲۸:۳۲ - تاریخ: ۱۳۹۱/۰۴/۱۲
این نمونه دستورات دیتا بیس هست
CREATE TABLE IF NOT EXISTS `users` (
`u_id` int(11) NOT NULL AUTO_INCREMENT,
`u_code` varchar(40) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`u_fname` varchar(40) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL DEFAULT ''
PRIMARY KEY (`u_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=73 ;
نویسنده: جکسون
زمان: ۱۲:۲۷:۳۷ - تاریخ: ۱۳۹۱/۰۴/۲۹
بسیار ممنون از زحمات شما
نویسنده: محمد
زمان: ۱۲:۲۲:۲۷ - تاریخ: ۱۳۹۱/۰۵/۱۰
سلام
چه طور میتونیم لینک دانلود برای فایلهایی که کاربران بر روی سایت آپلود میکنند ، در قسمت مدیریت سایت قرار دهیم تا مدیران به راحتی فایلهای ارسالی کاربران را دیده و در صورت نیاز آنها را دانلود نمایند؟
(آپلود رو بلدم ولی دانلود رو نه) مرسی
پاسخ: 
سلام
سوال شما خیلی کلی است و نمی توان پاسخ روشنی به آن داد، این موضوع بستگی به نحوه کدنویسی سیستم آپلود سایت و ارتباط دادن آن با بخش مدیریت دارد، در مجموع اولین راه حلی که به ذهن می رسد این است که باید هنگام آپلود فایل توسط کاربران، لینک فایل های ایجاد شده در سرور را در یک جدول پایگاه داده ذخیره کرده و از آنها در بخش مدیریت استفاده نمود.
نویسنده: محمد
زمان: ۱۴:۱۵:۱۵ - تاریخ: ۱۳۹۱/۰۵/۱۰
ممنون بابت پاسختون
من دقیقا همین کار رو کردم بدین نحو که آدرس ذخیره فایل رو در یک فیلد بنام مسیر در پایگاه ذخیره کردم (هم مسیر فایل هم اسم فایل) .حالا تو قسمت مدیریت سایت اومدم اطلاعات اون جدول رو واکشی کردم و مسیر رو به این صورت نوشتم ولی وقتی روی لینک ایجاد شده کلیک میکنم صفحه ارور 404 باز میشه و میگه صفحه رو پیدا نمیکنه.
echo "<td align='center'><a href='".$row['path_file']."'>لینک</a></td></tr>";
آدرس در بانک به این صورت ذخیره شده :
./files/code_user/myfile.docx
نویسنده: محمد
زمان: ۱۴:۵۹:۴۲ - تاریخ: ۱۳۹۱/۰۵/۱۰
اون مشکل لینک حل شد.اون ارور به خاطر فارسی بودن نام فایل رخ میداد.با فایل دیگه امتحان کردم حل شد.فقط الان یه مشکلی که هست اینه که همه فایلی رو آپلود نمیکنه مثلا یه فایل پی دی اف انتخاب کردم ارور نداد ولی آپلودم نکرد.ولی فایل زیپ و ورد امتحان کردم شد. میخواستم ببینم آیا توی آپلود محدودیت حجم فایل داریم ؟ یعنی تا چه حجمی رو میتونیم تو لوکال هاست آپلود نماییم ؟ مثلا اون دو تا فایلی که آپلود شدند حجم خیلی کم داشتند در حد 20 کیلوبایت ولی پی دی اف که آپ نشد حجمش 2 مگابایت بود. ممنون
پاسخ: 
حداکثر حجم مجاز برای آپلود، بستگی به تنظیمات سرور دارد، به طور پیش فرض php برای آپلود فایل حداکثر تا 2 مگابایت و برای ارسال محتوا از طریق متد post حداکثر تا 8 مگابایت حجم را قبول می کند، برای اینکه این تنظیمات را تغییر دهید باید فایل اصلی php.ini را در لوکال هاست پیدا کنید، این فایل معمولا در قسمت apache و bin وجود دارد، توجه کنید در برخی برنامه ها ممکن است به چند فایل php.ini برخورد کنید، فایلی را باید ویرایش کنید که تاثیر مستقیم بر روی سرور محلی دارد که معمولا همان فایل داخل پوشه apache است، قسمت مربوط به upload_max_filesiz را پیدا کنید و مقادیر آن را تغییر دهید، برای تغییر مقادیر post نیز می توانید قسمت post_max_size را تغییر داده و سپس سرور را مجددا راه اندازی کنید.
در سرور های اشتراکی نیز از htaccess. استفاده کرده و مقادیر زیر را در آن قرار دهید:
php_value upload_max_filesize 12M
php_value post_max_size 12M
نویسنده: فريبا
زمان: ۱۱:۴۶:۱۶ - تاریخ: ۱۳۹۱/۰۵/۱۶
سلام
از سايت خوبتان ممنونم.
سوال: اگر بخوايم فايل هاي را كه آپلود كرديم حالا دانلود كنيم چي كدي بايد بنويسيم؟
ممنون.
پاسخ: 
سلام
با استفاده از اطلاعات دایرکتوری فایل و نام آن، می توانید مقادیر را به صورت یک لینک در دیتابیس ذخیره کرده و از آن استفاده کنید، به فرض اگر نام فایل و دایرکتوری به صورت زیر باشد:
user-upload/image-for-upload.jpg 
یعنی فایل در فولدر user-upload و با نام image-for-upload.jpg ذخیره شده است، لینک آن می تواند به صورت زیر باشد:
<a href="http://www.yoursite.com/user-upload/image-for-upload.jpg">دانلود فایل آپلود شده</a>
نویسنده: سعید
زمان: ۱۸:۲۷:۱۴ - تاریخ: ۱۳۹۱/۰۵/۲۷
سلام و عرض ادب
آیا این امکان هست که ما در سایتمان فایلهایی را که آپلود کرده ایم حذف نماییم ؟ مثلا کاربری یک فایل را در سرور آپلود کرده است حال مدیر سایت بخواهد این فایل را حذف نماید . آیا همچین کاری میشه کرد البته با کدهای php. ممنون
پاسخ: 
سلام
بله این امکان به راحتی وجود دارد، کافی است از تابع unlink استفاده کنید، به طور مثال:
<?php
unlink("user-file.jpg");
?>
تابع unlink تنها به آدرس فایل احتیاج دارد و به راحتی می توانید این آدرس را به صورت داینامیک نیز ایجاد کنید، به طور مثال کد زیر در یک حلقه برای هر فایل موجود در یک دایرکتوری، یک لینک حذف می سازد:
<?php
// آدرس دایرکتوری آپلود
$dirPath = dir("../upload");
// تعریف یک آرایه
$fileArray = array();
// ایجاد آرایه برای حذف فایل ها
while (($file = $dirPath->read()) !== false){
$fileArray[] = trim($file);
}
// پایان خواندن از دایرکتوری
$dirPath->close();
// مرتب سازی و ایجاد لینک برای حذف
sort($fileArray);
$c = count($fileArray);
for($i=0; $i<$c; $i++){
if ($fileArray[$i]){
echo "delete.php?file=$fileArray[$i] <br />";
}
}
?>
اگر کمی با php آشنا باشید، به راحتی می توانید از این کد در برنامه خود استفاده کنید.
نویسنده: سعید
زمان: ۱۲:۴۵:۳۸ - تاریخ: ۱۳۹۱/۰۵/۲۸
ممنون از کمکتون.خیلی لازمش داشتم.
نویسنده: vahed
زمان: ۲۲:۵۳:۴۰ - تاریخ: ۱۳۹۱/۰۶/۲۳
با سلام و خسته نباشید و تشکر از زحماتتان .
مطالبتان خیلی عالی است . و جا دارد از شما ها تشکر کنم. و بی نهایت سپاسگزارم.
اگر امکان دارد در مورد مدیریت پنل و همچنین پرسش(از طرف کاربر) و پاسخ مناسب از طرف مدیر سایت هم مطلب بگذارید.
پاسخ: 
سلام
نظر لطف شماست؛ به تدریج و در آموزش های بعدی به موارد اشاره شده نیز خواهیم پرداخت.
نویسنده: amir
زمان: ۰۱:۱۹:۴۴ - تاریخ: ۱۳۹۱/۰۷/۲۹
با سلام
ممنون از زحماتتون
واقعا دستت درد نکنه
خیلی مفید بود و بدردم خورد
بازم ممنونم.
نویسنده: شهاب
زمان: ۱۲:۰۵:۱۵ - تاریخ: ۱۳۹۱/۰۸/۰۷
با سلام من برنامه آپلود را نوشتم ولی مشکل این است که باید دایرکتوری که فایل در آن کپی می شود مد کامل داشته باشد اگر مد دایرکتوری 777 نباشد فایل آپلود نمی شود چه کار کنم
پاسخ: 
سلام
اجازه آپلود فایل به تنظیمات سرور مربوط می شود، در هر صورت یا باید به طور دستی و در کنترل پنل هاست، مجوزهای ویرایش فولدر را تنظیم کنید یا اینکه از تابع chmod استفاده نمائید، به طور مثال:
<?php
$folder = dirname(__FILE__).'/upload/';
chmod($folder, 0755);
?>
به این صورت مد دایرکتوری فرضی upload بر روی 755 تنظیم می شود.
نویسنده: شهاب
زمان: ۱۰:۱۴:۴۷ - تاریخ: ۱۳۹۱/۰۸/۲۴
ممنون از جوابتان ولی این کد چون از طرف کاربر که ALL user است اجرا می شود قابل اجرا نیست و مد دایرکتوری را عوض نمی کند
پاسخ: 
خیر، وقتی تابع chmod از طرف شما (نویسنده و اجرا کننده کد بر روی سرور) بر روی عدد 0755 تنظیم می شود (می توانید 0777 هم برای مد کامل قرار دهید)، یعنی مدیر تمام اختیارات را دارد و سایر کاربران هم اختیار خواندن و اجرا (read و execute)؛ اما اگر این تابع عمل نمی کند دلیل دیگری دارد که احتمالا به تنظیمات سرور (مانند روشن بودن safe mode) مربوط می شود.
paged صفحه 1 از 5




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

5 × 5
 refresh
آپلود رایگان عکس و فایل
آگهی
parandsms.com
آموزش سیسکو
ciscohome.ir

آموزش جامع شبکه
تفاوت
tafavot.net

تفاوت دات نت
پنل پیامک
elitsms.ir

سامانه پیام کوتاه