Як скопіювати файл з одного каталогу в інший за допомогою PHP?


158

Скажіть, у мене також є файл test.phpв fooкаталозі bar. Як я можу замінити bar/test.phpз foo/test.phpдопомогою PHP? Я в Windows XP, крос-платформне рішення було б чудово, але Windows віддав перевагу.

Відповіді:


285

Ви можете використовувати copy()функцію:

// Will copy foo/test.php to bar/test.php
// overwritting it if necessary
copy('foo/test.php', 'bar/test.php');


Цитуючи пару релевантних пропозицій зі сторінки його керівництва:

Робить копію джерела файлу до dest.

Якщо файл призначення вже існує, він буде перезаписаний.


8
Чи copy( 'foo/test.php', 'bar/test.php' )створюється barкаталог, якщо він ще не існує?
henrywright

1
Ні @henrywright, він не створює каталогів сам. Ви повинні це зробити вручну. перевірити це на посібнику php
Haseeb Zulfiqar

25

Ви можете використовувати функцію rename () :

rename('foo/test.php', 'bar/test.php');

Однак це перемістить файл, а не скопіювати


22
Цікаво, чому названу цю функцію перейменовують і переміщують ноту чи щось
themhz

@themis Я теж хочу, щоб вони назвали цю функцію move. Було б інтуїтивно зрозуміло, якби ви мали трохи експозиції Linux.
Fr0zenFyr

4
@themis потому rename('foo/test1.php', 'foo/test2.php');;)
Ананд Сінгх


8

Ви можете скопіювати і минуле це допоможе вам

<?php
$file = '/test1/example.txt';
$newfile = '/test2/example.txt';
if(!copy($file,$newfile)){
    echo "failed to copy $file";
}
else{
    echo "copied $file into $newfile\n";
}
?>

7

Найкращий спосіб копіювання всіх файлів з однієї папки в іншу за допомогою PHP

<?php
$src = "/home/www/example.com/source/folders/123456";  // source folder or file
$dest = "/home/www/example.com/test/123456";   // destination folder or file        

shell_exec("cp -r $src $dest");

echo "<H2>Copy files completed!</H2>"; //output when done
?>

1

Привіт хлопці хотіли також додати про те, як скопіювати за допомогою динамічного копіювання та вставлення.

скажімо, ми не знаємо фактичну папку, яку створить користувач, але ми знаємо, що в цю папку нам потрібні файли, які потрібно скопіювати, щоб активувати якусь функцію, наприклад видалення, оновлення, перегляди тощо.

Ви можете використовувати щось подібне ... Я використав цей код в одному зі складних проектів, над якими я зараз зайнятий. Я просто будую це сам, тому що всі відповіді, які я отримав в Інтернеті, давали мені помилку.

    $dirPath1 = "users/$uniqueID"; #creating main folder and where $uniqueID will be called by a database when a user login.
    $result = mkdir($dirPath1, 0755);
            $dirPath2 = "users/$uniqueID/profile"; #sub folder
            $result = mkdir($dirPath2, 0755);
                $dirPath3 = "users/$uniqueID/images"; #sub folder 
                $result = mkdir($dirPath3, 0755);
                    $dirPath4 = "users/$uniqueID/uploads";#sub folder
                    $result = mkdir($dirPath4, 0755);
                    @copy('blank/dashboard.php', 'users/'.$uniqueID.'/dashboard.php');#from blank folder to dynamic user created folder
                    @copy('blank/views.php', 'users/'.$uniqueID.'/views.php'); #from blank folder to dynamic user created folder
                    @copy('blank/upload.php', 'users/'.$uniqueID.'/upload.php'); #from blank folder to dynamic user created folder
                    @copy('blank/delete.php', 'users/'.$uniqueID.'/delete.php'); #from blank folder to dynamic user created folder

Я думаю, що у Facebook чи Twitter є щось подібне для створення динамічної інформаційної панелі кожного нового користувача ....


0

Ви можете використовувати як перейменувати (), так і копіювати ().

Я, як правило, вважаю за краще використовувати перейменування, якщо мені більше не потрібно, щоб вихідний файл залишався в його місці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.