@Kirill-Gorelov
С ума с IT

Curl скачать файл?

Привет.

Какая ситуация, нужно скачать файл с я.диска.
Взял готовую библиотеку nixsolutions/yandex-php-library, работает.
Меняю токен на другой, с точно такими же настройками, авторизация не проходит. Супер тех поддержка яндекса, просто отписалась, мол "не гарантируем работа способность своих сервисов" ;)

Хорошо ....
Начинаю писать свой класс, работает, НО метод скачивания картинки не работает.
spoiler

$url = 'https://cloud-api.yandex.net/v1/disk/resources/download?path=' . urlencode($YApath);
        
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $this->token));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HEADER, false);
        $res = curl_exec($ch);
        curl_close($ch);*/

        // echo $res;
            $res = json_decode($res);
            $file_name = $localPath;
            var_dump($file_name);
            var_dump($localPath);
            var_dump($res->href);
            $file = fopen($file_name, 'w');
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $res->href);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $this->token));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_FILE, $file);
            $res = curl_exec($ch);
            curl_close($ch);
            fclose($file);
            var_dump($res);



Файл скачивает, но он пустой. Весит ноль байтов ...
Есть похожий вопрос, но там парень решил проблему через wget, а это вариант не катит.
Все что нужно - это понять как скачать файл и все.
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
@AlexRsk
Попробуй вместо cuRL заюзать file_get_contents
$context  = stream_context_create([
                "ssl" => [
                    "verify_peer"      => false,
                    "verify_peer_name" => false,
                ],
            ]);
            header('Content-Type: application/octet-stream');
            header('Content-Transfer-Encoding: Binary');      
            header('Content-Disposition: attachment; filename="' . $fileName . '"');
            echo file_get_contents($link, false, $context);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы