M
M
midarovrk2015-10-19 20:36:41
PHP
midarovrk, 2015-10-19 20:36:41

PHP how to auto-create folders when uploading a file from one server to another?

Hello! Please help me to correct the script a little:

<?php
get_img_in_dir("http://www.jurnalu.ru/online-reading/comicsonline/dcearth2/dcearth2008/5","1/dcearth2/008");
 
function get_img_in_dir($url, $dir) {
 
    $host = parse_url($url, PHP_URL_HOST); // Нахожу хост в урле
 
    /* Для начала скачиваю код страницы... */
    $curl = curl_init(); // Инициализирую CURL
    curl_setopt($curl, CURLOPT_HEADER, 0); // Отключаю в выводе header-ы
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //озвратить данные а не показать в браузере
    curl_setopt($curl, CURLOPT_URL, $url); // Указываю URL
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');
    curl_setopt($curl, CURLOPT_REFERER, "http://www.jurnalu.ru/");
    $code = curl_exec($curl); // Получаю данные
    curl_close($curl); // Закрываю CURL сессию
     
     
 
    // Код скачан и сидит в переменной $code
    // Теперь можно через регулярные выражения
    // вынимать из него ссылки
    $arrayImg = array(); // Массив для ссылок изображений
    $regex = '/<\s*img[^>]*src=[\"|\'](.*?)[\"|\'][^>]*\/*>/i';
    preg_match_all($regex, $code, $arrayImg);
 
    // Теперь в $arrayImg[1] сидит массив url-ами изображений
 
    // Исправляю все ссылки на абсолютные и скачиваю их...
    for($i=0; $i<count($arrayImg[1]); $i++) {
         
        $path = parse_url($arrayImg[1][$i], PHP_URL_PATH); // Нахожу в ссылке путь
        $path2 = parse_url($arrayImg[1][$i], PHP_URL_QUERY); // Нахожу в ссылке путь
        $absolute_url = 'http://comicsonline.ru'.$path.'?'.$path2; // Создаю абсолютный путь
    
        // Вот так я нахожу имя файла....
        $name = explode("/", $absolute_url);
        $name = $name[count($name)-1];
        $name = substr($name, 0, strpos($name, "?"));
 
        // Скачиваю изображение
        if (!copy($absolute_url, $dir.'/'.$name)) {
            echo '<p style="color:red;">Error copy - '.$name.'</p>';
            }      
         
    }
}
?>

What the script does:
Enters the specified page, finds such a link,
http://comicsonline.ru/1/dcearth2/008/5.png
then downloads and saves the file to the specified folder 1/dcearth2/008 on its server.
But, you have to write the path of the folders in the script and manually create these folders on the server yourself.
Is it possible to automate this somehow? So that the script itself creates the necessary folders, exactly the same as those indicated in the link to the image?
I managed to do this:
mkdir("1/dcearth2/008/");
But again, you need to write the path of the folders in the script itself.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
Dimonchik, 2015-10-19
@midarovrk

you again?

if (!mkdir(""./1/dcearth2/008/"", 0777, true)) {
    die('Failed to create folders...');
}

do not forget about the dot, well, try without a dot - see where it will create

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question