Скачивание файлов с использованием PHP и cURL - PullRequest
0 голосов
/ 14 июня 2011

Я успешно использовал эту функцию для загрузки SWF-файлов (флеш-игр). Когда я использую этот скрипт для одного конкретного сайта, он загружает все игры (я сказал скрипту загрузить 4 игры из списка) с точным размером 299 байт? Я попытался загрузить эти игры с помощью Google Chrome, и загрузка прошла успешно. Чего-то не хватает в используемых мной функциях CURL или алгоритм загрузки недостаточно хорош? Любая помощь будет принята с благодарностью.

function saveFlash($fullPaths,$folder,$gamenames,$i){
        $curl = curl_init($fullPaths[$i]);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        //Create a new file in the given folder
        $fp = fopen($folder."/".$gamenames[$i].".swf", 'w');
            if ($fp == FALSE){ 
                echo "File not opened<br>";} 
        //Ask cURL to write the contents to a file
        curl_setopt($curl, CURLOPT_FILE, $fp);
        //Execute the cURL session
        curl_exec ($curl);
        //Close cURL session and file
        curl_close ($curl);
        fclose($fp);
    }

Текстовый редактор выдает следующее

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://www.freeonlinegames.com/">here</a>.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at freeonlinegames.com Port 80</address>
</body></html>

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Эта ошибка, которую вы получаете, является обычным способом сообщить вам, что хотлинки не разрешены. Если вы просто хотите загрузить SWF, вам нужно установить реферер.

curl_setopt($ch, CURLOPT_REFERER, 'http://urlofpagetheswfwasfoundon');

Если после этого он все еще не работает, вам может потребоваться установить соответствующую строку user-agent.

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 Something Something');

Кроме того, будьте уверены, что вам разрешено делать то, что вы пытаетесь сделать. Копирование чужих сайтов очень не одобряется и обычно незаконно.

1 голос
/ 14 июня 2011

Вы хотите установить CURLOPT_FOLLOWLOCATION, чтобы позволить ему следовать перенаправлениям.

Вы также можете установить CURLOPT_MAXREDIRS, чтобы он не перенаправлялся из-под контроля.

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