2010-10-26 7 views
0

Amis,avec le dossier de manipulation avec php

J'ai un problème ............

Aidez-moi s'il vous plaît ........

Suis obtenir l'URL de l'image de mon client, je veux stocker ces images dans mon dossier local.

si ces images sont en moins, je vais les enregistrer manuellement

Mais ils sont plus de 5000 images .........

S'il vous plaît donner un code à la charge vers le bas toutes les images avec PHP

+0

Donc l'URL juste le répertoire répertorie les URLs à un dossier et vous voulez obtenir tous les fichiers d'image de cela? Ai-je raison de penser cela? – Malachi

+0

Est-ce que votre client vous a donné une liste d'URL pour chaque image ou est-ce une page HTML qui contient toutes les images ou quelques pages HTML? –

Répondre

0

vous pourriez essayer file_get_contents pour cela. faites simplement une boucle sur le tableau de fichiers et utilisez file_get_contents ('url'); récupérer les fichiers dans une chaîne puis file_put_contents ('nouveau nom de fichier'); pour réécrire les fichiers.

0

Vous pouvez télécharger le fichier en utilisant la fonction PHP file_get_contents(), puis l'écrire sur votre ordinateur local, par exemple, avec la fonction fwrite().

La seule question ouverte est, où obtenir la liste des fichiers supposés être téléchargés - vous ne l'avez pas spécifié dans votre question.

projet de Code:

$filesList = // obtain URLs list somehow 
$targetDir = // specify target dir 
foreach ($filesList: $fileUrl) { 
    $urlParts = explode("/", $fileUrl); 
    $name = $urlParts[count($urlParts - 1)]; 
    $contents = file_get_contents($fileUrl); 

    $handle = fopen($targetDir.$filename, 'a'); 
    fwrite($handle, $contents); 
    fclose($handle); 
} 
0

Je ne suis pas sûr que ce soit ce que vous voulez. Compte tenu du dossier (où PHP a le pouvoir d'obtenir le contenu du dossier) URL et une URL que vous voulez écrire, cela copier tous les fichiers:

function copyFilesLocally($source, $target_folder, $index = 5000) 
{ 
    copyFiles(glob($source), $target_folder, $index); 
} 

function copyFiles(array $files, $target_folder, $index) 
{ 
    if(count($files) > $index) 
    { 
     foreach($files as $file) 
     { 
      copy($file, $target_folder . filename($file)); 
     } 
    } 
} 

Si vous cherchez à un serveur distant, Essayez ceci:

function copyRemoteFiles($directory, $target_folder, $exclutionFunction, $index = 5000) 
{ 
    $dom = new DOMDocument(); 
    $dom->loadHTML(file_get_contents($directory)); 
    // This is a list of all links which is what is served up by Apache 
    // when listing a directory without an index. 
    $list = $dom->getElementsByTagName("a"); 
    $images = array(); 
    foreach($list as $item) 
    { 
     $curr = $item->attributes->getNamedItem("href")->nodeValue; 
     if($exclutionFunction($curr)) 
      $images[] = "$directory/$curr"; 
    } 
    copyFiles($images, $target_folder, $index); 
} 

function exclude_non_dots($curr) 
{ 
    return strpos($curr, ".") != FALSE; 
} 

copyRemoteFiles("http://example.com", "/var/www/images", "exclude_non_dots");