[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Копирование папки
Cocain
Сейчас постараюсь обьяснить... У меня есть такой код:
if (isset($_GET['test'])){
it(file_exists('files/'.$_GET['test'].'png')){
copy('files/'.$_GET['test'].'png','sout/'.$mdir.'test.png');
}else copy('files/1.png','sout'/'.$mdir.'test.png');}
elseif (!isset($_GET['
test'])){copy('files/1.png','sout/'.$mdir.'test.png');}

(Сейчас с телефона, мог опечататься)
Который копирует заданный ранее (верхнюю часть не пишу, т.к. сейчас с телефона) файл. А каким кодом можно точно так же, туда же скопировать целую папку? Либо все файлы из папки?
Я совсем чайник, поэтому если вам не трудно, дайте пожалуйста наглядный пример... Чтоб так же ранее выбранная папка копировалась по тому же адресу. Был бы очень благодарен за помощь...



Спустя 1 час, 4 минуты, 43 секунды (25.01.2009 - 02:46) kirik написал(а):
Тут например есть готовый код копирования папок.

Спустя 33 минуты, 39 секунд (25.01.2009 - 03:20) twin написал(а):
Мне эта задачка показалась интересной, вот Вам универсальная функция. Аргументом принимает файлы или каталоги, причем копирует не только файлы из нужного каталога, но и все вложенные каталоги вместе с файлами.
PHP
<?php

function dir_new
($mdir)
{
    if(is_file("files/".$mdir))
    {
    copy("files/".$mdir, "sout/".$mdir);
    }
    else
    
{
        if(!is_dir("sout/".$mdir))
        mkdir("sout/".$mdir, 0777); 
       
$new 
= null;     
$dir_files 
= opendir("files/".$mdir);
    
while(false !== ($file = readdir($dir_files)))
    if($file != '.' && $file != '..') 
    $new
[] = $mdir."/".$file;
        
        if
($new)
        foreach($new as $check )
             if(is_dir("files/".$check))
            {          
            mkdir
("sout/".$check, 0777);
            dir_new($check);
            } 
             elseif
(is_file("files/".$check))
            {
            copy("files/".$check, "sout/".$check);
            }             

    
}
}

dir_new("catalog");
Могут возникнуть проблемки с правами, на каталог sout их скорее всего придется выставить 777

Спустя 1 год, 9 месяцев, 3 дня, 14 часов, 13 минут, 42 секунды (28.10.2010 - 16:33) Akim написал(а):
Хороший пример twin, но я почему-то не могу разобраться, как сделать так чтобы можно было задавать каталог с файлами и путь куда их копировать. Пожалуйста помогите smile.gif
Я сделал так, но ничего не происходит...

<form action="index.php" method="post">
Папка с базой: <input name="baza" type="text" /><br />
Папка пользователей: <input name="pusers" type="text" /><br />
Имя пользователя: <input name="user" type="text" /><br />
<
input name="zadat" type="submit" />
</
form>


if (isset($_POST['zadat']))
{
echo $_POST['baza']."<br/>";
echo $_POST['pusers']."<br/>";
echo $_POST['user']."<br/>";


echo "dfddg";
if(is_file($_POST['baza']))
{
copy($_POST['baza'], $_POST['pusers']."/".$_POST['user']);
}
else
{
if(!is_dir($_POST['pusers']."/".$_POST['user']))
mkdir($_POST['pusers']."/".$_POST['user'], 0777);

$new = null;
$dir_files = opendir($_POST['baza']);

while(false !== ($file = readdir($dir_files)))
if($file != '.' && $file != '..')
$new[] = $_POST['user']."/".$file;

if($new)
foreach($new as $check )
if(is_dir($_POST['baza'].$check))
{
mkdir($_POST['pusers'].$check, 0777);
dir_new($check);
}
elseif(is_file($_POST['baza'].$check))
{
copy($_POST['baza'].$check, $_POST['pusers'].$check);
}

}


echo "22222";
}


Я сделал так, но ничего не происходит...

Спустя 29 минут, 41 секунда (28.10.2010 - 17:03) twin написал(а):
Ого раскопал... Два года назад это было, разве вспомнить...
Щас попробую разобраться.

Спустя 48 минут, 13 секунд (28.10.2010 - 17:51) twin написал(а):
Вот, вспомнил былое)))
Учти, папки, которые передаешь в форме должны существовать. Кроме пользователя.
И не вздумай дать эту форму юзеру - загадят сервак. Только в админке.
<?php

function
copyDir($mdir, $outdir)
{

if(!is_dir($outdir))
mkdir($outdir, 0777);

$dir = opendir($mdir);

while(false !== ($check = readdir($dir)))
{
if($check != '.' && $check != '..')
{
if(is_dir($mdir .'/'. $check))
{
mkdir($outdir .'/'. $check, 0777);
copyDir($mdir .'/'. $check, $outdir .'/'. $check);
}
elseif(is_file($mdir .'/'. $check))
{
copy($mdir .'/'. $check, $outdir .'/'. $check);
}

}
}
}


if (!empty($_POST['zadat']) && !empty($_POST['baza']) && !empty($_POST['pusers']) && !empty($_POST['user']))
copyDir($_POST['baza'], $_POST['pusers']."/".$_POST['user']);

?>

<form action="index.php" method="post">
Папка с базой: <input name="baza" type="text" /><br />
Папка пользователей: <input name="pusers" type="text" /><br />
Имя пользователя: <input name="user" type="text" /><br />
<
input name="zadat" type="submit" />
</
form>

Спустя 18 часов, 6 минут, 54 секунды (29.10.2010 - 11:58) Akimserg написал(а):
Огромное спасибо!!!!
Всё работает!!!! А я вчера полдня сидел над этим)))

Спустя 7 минут, 3 секунды (29.10.2010 - 12:05) twin написал(а):
Блин... Ну почему спасибо не булькает. smile.gif

Спустя 10 минут, 50 секунд (29.10.2010 - 12:16) Akimserg написал(а):
Я дал рубль)))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.