2013-01-12 44 views
1

我想要一個php腳本,我可以從瀏覽器訪問該腳本將文件下載到我的遠程服務器(而不是我的電腦)。 這是完整的代碼,我從瀏覽器中調用爲localhost /的download.php,但它不工作(在網絡管理員我看到的東西正在被下載,但項目文件夾中的我無法找到它):當從瀏覽器調用PHP cURL下載不起作用

<? 
    function download($url, $referer, $name) 
    { 
     $path = $name.'.mp3'; 
     $fp = fopen($path, 'w'); 
     $ch = curl_init($url); 
     curl_setopt($ch, CURLOPT_FILE, $fp); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_HEADER, false); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:13.5) Gecko/20100101 Firefox/13.4.9\r\n', 
        "Referer: $referer" 
     )); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     fwrite($fp, $data); 
     fclose($fp); 
    } 

    echo 'Please wait it is downloading...<br/>'; 
    /*$url = $_GET['url']; 
    $referer = $_GET['referer']; 
    $name = $_GET['name'];*/ 
    $url = "http://stream.get-tune.net/file/91259796/101538464/3652118538/ee58ddeb905ffa12/Palwan_Halmyradow_-_Sensiz_(get-tune.net).mp3"; 
    $referer = "http://get-tune.net/?a=music&q=palwan+halmyradow"; 
    $name = "Palwan Halmyradow - Sensiz"; 
    download($url, $referer, $name); 
?> 

但是,當我從命令行下面的命令調用時,它起作用:

php /var/www/idym/download.php 

問題是什麼?

+0

如果你在寫什麼文件? – vanneto

+0

@vaneto我想下載文件到我的服務器。出於記憶的原因,我直接寫它。 – torayeff

+0

在這裏,這應該工作: http://stackoverflow.com/questions/3926944/downloadable-mp3-files-from-php-headers-not-working ;) – inkytales

回答

0
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

這種差異可能是cli php和apache php的不同配置造成的。

http://php.net/manual/en/function.curl-setopt.php

完整代碼:

function download($url, $referer, $name) 
{ 
    $path = $name.'.mp3'; 
    $fp = fopen($path, 'w'); 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
       'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:13.5) Gecko/20100101 Firefox/13.4.9\r\n', 
       "Referer: $referer" 
    )); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    fwrite($fp, $data); 
    fclose($fp); 
} 
+0

我只是將您的代碼添加到我的代碼中。它沒有保存任何文件 – torayeff

+0

@torayeff如果你設置了這個選項,響應的內容將被存儲在代碼中的$ data中。你需要運行file_put_contents('path/to/file',$ data);或者這樣來保存它 – fsw

+0

@torayeff如果你是這個懶惰添加完整的代碼:P – fsw

相關問題