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.

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.


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


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;)


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";
}
?>

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
?>

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 ...


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.