Jak skopiować plik z jednego katalogu do drugiego za pomocą PHP?

158

Powiedzmy, że mam również plik test.phpw fookatalogu bar. Jak mogę wymienić bar/test.phpz foo/test.phpużyciem PHP? Korzystam z systemu Windows XP, rozwiązanie wieloplatformowe byłoby świetne, ale preferowane byłoby okna.

Kliknij opcję Głos za
źródło

Odpowiedzi:

285

Możesz użyć copy()funkcji:

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


Cytując kilka odpowiednich zdań ze strony podręcznika:

Tworzy kopię pliku źródłowego na dest.

Jeśli plik docelowy już istnieje, zostanie nadpisany.

Pascal MARTIN
źródło
8
Czy copy( 'foo/test.php', 'bar/test.php' )tworzy barkatalog, jeśli jeszcze nie istnieje?
henrywright
1
Nie @henrywright, nie tworzy samodzielnie katalogów. Musisz to zrobić ręcznie. sprawdź to w podręczniku php
Haseeb Zulfiqar
25

Możesz użyć funkcji rename () :

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

Spowoduje to jednak przeniesienie pliku bez kopiowania

Dizzi
źródło
22
Zastanawiam się, dlaczego nazwa tej funkcji zmieniła nazwę i zanotowała ruch, czy coś w tym stylu
tehz
@themis Też żałuję, że nie nazwali funkcji move. Byłoby intuicyjne, gdyby ktoś miał trochę ekspozycji na Linuksa.
Fr0zenFyr
4
@themis ponieważ rename('foo/test1.php', 'foo/test2.php');;)
Anand Singh
13

kopia to zrobi. Sprawdź podręcznik php . Proste wyszukiwanie w Google powinno odpowiedzieć na ostatnie dwa pytania;)

cweinberger
źródło
8

Możesz skopiować i wklejać to pomoże ci

<?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";
}
?>
Mukesh Jakhar
źródło
7

Najlepszy sposób na skopiowanie wszystkich plików z jednego folderu do drugiego przy użyciu 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
?>
Yogendra - programista eCommerce
źródło
1

Cześć, chcieli również dodać, jak kopiować za pomocą dynamicznego kopiowania i wklejania.

powiedzmy, że nie znamy faktycznego folderu, który utworzy użytkownik, ale wiemy, że w tym folderze potrzebujemy plików do skopiowania, aby aktywować jakąś funkcję, taką jak usuwanie, aktualizacja, widoki itp.

możesz użyć czegoś takiego ... Użyłem tego kodu w jednym ze złożonych projektów, nad którymi obecnie jestem zajęty. po prostu zbudowałem go samodzielnie, ponieważ wszystkie odpowiedzi, które otrzymałem w Internecie, dawały mi błąd.

    $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

Myślę, że Facebook lub Twitter używa czegoś takiego do budowania dynamicznego pulpitu każdego nowego użytkownika ...

Makhi Ngubane
źródło
0

Możesz użyć zarówno funkcji rename (), jak i copy ().

Zwykle wolę używać funkcji zmiany nazwy, jeśli nie chcę już, aby plik źródłowy pozostawał w swoim miejscu.

Zaćmienie
źródło