2017-04-07 2 views
1

Ich habe ein einfaches PHP-Skript, das ein ganzes Verzeichnis scannt und alle Dateien hochlädt. Aber ich möchte, dass es auch die Ordner hochlädt. (und die Ordnerstruktur beibehalten) Wie mache ich das?PHP cURL - Wie man Ordner hochlädt?

Mein Code:

$dir = 'Test/'; 

$di = new RecursiveDirectoryIterator($dir); 

$ch = curl_init('https://website.com'); 
curl_setopt($ch, CURLOPT_URL,'https://website.com'); 
curl_setopt($ch, CURLOPT_POST,1); 

foreach (new RecursiveIteratorIterator($di) as $filename => $file) { 

    echo $filename; 
    $cFile = curl_file_create($filename); 
    $post = array('file'=> $cFile); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    $result=curl_exec ($ch); 
} 

curl_close ($ch); 

Antwort

0

Sie können nicht nur ein Verzeichnis laden, weil es nicht ein Informationstyp, den Sie überall hochladen. Es gibt jedoch einige wenige einfache Ansätze.

Ansatz 1

einen Verzeichnisnamen via cURL senden. Zum Beispiel:

$post = array('dir'=> $someDirectoryName); 

Auf der anderen Seite erstellen gerade ein Verzeichnis PHP-Funktion mkdir

mit Denken Sie daran, einen Pfad mit Ihrer Datei übergeben Sie das Verzeichnis Struktur zu erhalten:

$post = array('file'=> $cFile, 'path' => $somePath); 

Ansatz 2

einfach einen Dateipfad mit Dateidaten übergeben:

$post = array('file'=> $cFile, 'path' => 'dir1/subdir2/filename.ext'); 

Auf der anderen Seite Parse ‚Pfad‘ und alle erforderlichen Verzeichnisse erstellen.

Ansatz 3

ein Archiv Ihres Verzeichnis erstellen (zB tar.gz) und dieses Archiv hochladen. Auf der anderen Seite entpacken Sie einfach das Archiv in das Zielverzeichnis .

Verwandte Themen