проблема с обработкой папок с php - PullRequest
0 голосов
/ 26 октября 2010

Друзья,

У меня проблема ............

Помогите мне, пожалуйста ........

Получаю URL-адрес изображения от моего клиента, я хочу сохранить эти изображения в своей локальной папке.

Если эти изображения меньше, я сохраню их вручную

Но они больше 5000images .........

Пожалуйста, дайте код для загрузки всех изображений с помощью PHP

Ответы [ 3 ]

0 голосов
/ 26 октября 2010

Вы можете скачать файл, используя file_get_contents () функцию PHP, а затем записать его на локальный компьютер, например, с помощью функции fwrite () .

Единственный открытый вопрос: где взять список файлов, которые должны быть загружены - вы не указали его в своем вопросе.

Код проекта:

$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 голосов
/ 26 октября 2010

Я не уверен, что это то, что вы хотите.Учитывая URL-адрес папки (где PHP имеет право получать содержимое папки) и URL-адрес, на который вы хотите записать, будут скопированы все файлы:

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

Если вы ищете удаленныйсервер, попробуйте это:

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" );
0 голосов
/ 26 октября 2010

вы можете попробовать file_get_contents для этого.просто зациклите массив файлов и используйте file_get_contents ('url');извлечь файлы в строку, а затем file_put_contents («новое имя файла»);чтобы снова записать файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...