簡體   English   中英

通過PHP下載文件

[英]Downloading files via PHP

我在通過PHP下載文件時遇到問題。

有趣的是,我無法追蹤問題。 該代碼對某些網站有效,而對其他網站則不利。 這是PHP中的循環,可從網站下載備份文件(請求之前睡眠會有所延遲)。

為什么我無法追蹤問題? 因為當我手動運行代碼時,它可以工作(下載文件)。 當它由CRON運行時,有時會下載文件,有時卻不下載文件(僅下載2個空的新行)。

下載是通過curl進行的(我也嘗試過使用fsockopen和fread使用不同的代碼)。

有誰知道如何解決這個問題?

通過設置正確的選項,可以使用CURL刪除標題。

function fetch_url($url) {
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_TIMEOUT, 20);

    if ($cookiejar != '')  {
        curl_setopt($c, CURLOPT_COOKIEJAR, $cookiejar);
        curl_setopt($c, CURLOPT_COOKIEFILE, $cookiejar);
    }

    curl_setopt($c, CURLOPT_HEADER , false);
    curl_setopt($c, CURLOPT_SSL_VERIFYHOST , false);
    curl_setopt($c, CURLOPT_SSL_VERIFYPEER , false);
    curl_setopt($c, CURLOPT_FOLLOWLOCATION , true);
    curl_setopt($c, CURLOPT_AUTOREFERER , true);
    curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');
    $con = curl_exec($c);
    curl_close($c);
    return $con;
}

echo fetch_url('http://www.example.com/zip.zip');

嘗試使用http://www.php.net/manual/zh-CN/function.curl-getinfo.php顯示有關curl請求的信息

echo curl_errno($c);
print_r(curl_getinfo($c));

另外,也許它在您其他地方的代碼中,但是我沒有看到任何內容類型的標頭用於文件的回顯

$file = fetch_url('http://www.example.com/zip.zip');
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="zip.zip"');
header("Content-length: " . strlen($file));
echo $file;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM