pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
مدیریت فایلها در PHP قسمت دوم : مدیریت فایلها و پوشه ها
01-07-2014, 02:52 PM
ارسال: #1
مدیریت فایلها در PHP قسمت دوم : مدیریت فایلها و پوشه ها
در قسمت قبل با نحوه خواندن و نوشتن محتویات فایلهای متنی در PHP آشنا شدید.در این این قسمت به مدیریت فایلها و پوشه ها میپردازیم.

مباحثی که در این بخش خواهیم آموخت :

لیست کردن فایلها و پوشه ها
ایجاد پوشه جدید
کپی کردن فایلها و پوشه ها
حذف فایلها
چک کردن وجود یک فایل یا پوشه

برای دسترسی به محتویات یک پوشه چندتا راه وجود داره.در زیر با این راه ها آشنا میشید.

تابع opendir

این تابع آدرس یک پوشه رو دریافت میکنه و یک اشاره گر رو برگشت میده که از این اشاره گر میتونیم در تابع readdir استفاده کنیم :

کد php:
<?php 
    $location 
'./'
    
$dp opendir($location); 
    while (
$entry readdir($dp)) 
    {
        if (
is_dir($location $entry))
        {
            echo 
'[Dir] ' $entry '<br />';
        }
        else if (
is_file($location $entry))
        {
            echo 
'[File] ' $entry '<br />';
        } 
    } 
    
closedir($dp); 
?>

در کد بالا ابتدا با استفاده از تابع opendir یک پوشه رو باز کردیم سپس در حلقه while و با استفاده ازتابع readdir محتویات پوشه رو یکی یکی در متغیر $entry ذخیره کردیم.

برای تشخیص اینکه آیا اشاره گر روی یک فایل قرار داره یا یک پوشه از توابع is_file و is_dir استفاده میکنیم.
تابع dir

خروجی این تابع یک شیء از کلاس Directory میباشد و با استفاده از متدهای این کلاس میتونیم محتویات پوشه رو پیمایش کنیم

کد php:
$location './'
    
$dir dir($location); 
    while (
$entry $dir->read()) 
    {
        if (
is_dir($location $entry))
        {
            echo 
'[Dir] ' $entry '<br />';
        }
        else if (
is_file($location $entry))
        {
            echo 
'[File] ' $entry '<br />';
        } 
    } 

کد بالا هم مثل مثال قبل نام فایلها و پوشه هارو چاپ میکنه.

کپی کردن فایلها

برای کپی کردن فایلها از یک مکان به مکان دیگه از تابع copy استفاده میکنیم :

کد php:
<?php
$file 
'example.txt';
$newfile 'example.txt.bak';

if (!
copy($file$newfile)) {
    echo 
"failed to copy $file...\n";
}
?>

این تابع دو پارامتر ورودی میگیره.اولی مسیر و نام فایل مبدا و دومی مسیر فایل مقصد.دقت کنید که اگر فایل مقصد وجود داشته باشه فایل overwrite میشه.

اگر هم خطایی در هنگام کپی خطایی رخ بده این تابع مقدار false برمیگردونه.

حذف فایل

برای حذف فایل هم میتونید از تابع unlink استفاده کنید :

کد php:
unlink('test.html'); 

برای چک کردن وجود یک فایل از تابع file_exists استفاده میشه.

کد php:
if(file_exists('test.jpg')) {
 
// ...


در ادامه یه کلاس ساده ساختم برای لیست کردن محتویات یک پوشه.

کد php:
<?php
class FileManager
{

    private 
$path;

    function 
__construct($path '')
    {
        
$this->path $path;
    }

    function 
getDirectories()
    {
            
$dirContent = array();
        
$dir opendir($this->path);
        while(
$contnets readdir($dir))
        {
            if(
is_dir($this->path $contnets) AND $contnets!='.' AND $contnets != '..')
            {
                
$dirContent['dir'][] = $contnets;            
            }elseif (
is_file($this->path $contnets))
            {
                
$dirContent['file'][] = $contnets;
            }

        }

        return 
$dirContent;
    }

    function 
render()
    {

                
$dirContent $this->getDirectories();
                echo 
'<h1>'.$this->path.'</h1>';

                echo 
'<a href="?dir=./">Root Directory.</a><br>';

                
$parent explode('/',$this->path);
                
array_pop($parent);
                
array_pop($parent);
                
$parent implode('/',$parent);              
                echo 
'<a href="?dir='.$parent.'/">Parent Directory.</a><br>';
                echo 
'Root ..
                <br>            
                <ul>    
                '
;
                foreach(
$dirContent as $key=>$value)
                {
                    if(
$key=='dir')
                    {
                       foreach(
$value as $v)
                       {
                           echo 
'<li><a href="?dir='.$this->path.$v.'/">'.$v.'</a></li><br>';
                       }
                    }
                    else
                    {
                        echo 
'<ul>';
                       foreach(
$value as $v)
                       {
                           echo 
'<li><a href="'.$this->path $v.'">'.$v.'</a></li><br>';
                       } 
                       echo 
'</ul>';
                    }

                }
                echo 
'<ul>';
    }



برای استفاده از کلاس بالا به صورت زیر عمل میکنیم :

کد php:
<?php
include 'FileManager.php';
$path '/files/';
if(isset(
$_GET['dir']))
{
    
$path $_GET['dir'];
    
$fileManager = new FileManager($_GET['dir']);
}else
    
$fileManager = new FileManager('./files/');

$fileManager->render();
?>

با استفاده از این کلاس میتونید لیست محتویات هر پوشه رو با کلیک روی پوشه مشاهده کنید.

منتظر نظراتتون هستم
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition