• Как скачать файл или архив файлов с CLOUD.MAIL через PHP CURL, зная публичную ссылку, например https://cloud.mail.ru/public/N74q/PqfRqxhbB?

    @reducenta
    фрилансер
    Я делал так.
    Вроде бы все работало, за исключением того, что нельзя записать файл под тем же именем, что и по ссылке. Наверное как то можно и это имя узнать, но это мне было не нужно - поэтому не заморачивался.
    Плюс к этому, я так понимаю, этот метод работает, если по публичной ссылке лежит только один файл.

    $login = 'login@mail.ru'; //Любой логин на mail.ru
    $file = 'https://cloud.mail.ru/public/4iJK/AAABBB'; //Публичная ссылка
    $out = __DIR__ . 'file.xlsx'; //Куда записывать файл
    
    $url = 'https://cloud.mail.ru/api/v2/dispatcher?api=2&email=' . $login . '&_=' . time();
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $answer = json_decode(curl_exec($ch), true);
    curl_close($ch);
    
    $weblink_prefix = $answer['body']['weblink_get'][0]['url'];
    $weblink_suffix = str_replace('https://cloud.mail.ru/public', '', $file);
    
    file_put_contents($out, file_get_contents($weblink_prefix . $weblink_suffix));
    Ответ написан
    Комментировать