2011-11-13 187 views
1

我使用捲曲下載從位置文件PHP捲曲下載

function get_data($url) 
{ 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    header("Content-Type: application/force-download"); 
    header("Content-disposition: attachment; filename=zipfile.tar.gz"); 
    echo $data; 
} 

$rt = get_data('http://slackbuilds.org/slackbuilds/13.37/multimedia/umplayer.tar.gz'); 

這並下載文件,但我無法打開it.Is強制提正確的Content-Type?我正在使用這個腳本來處理視頻,所以我嘗試了Content-Type:Video,但仍然不適合。

回答

2

設置CURLOPT_BINARYTRANSFER爲TRUE,並更改內容類型。

<?php 

$url = "http://slackbuilds.org/slackbuilds/13.37/multimedia/umplayer.tar.gz"; 
$opts = array(
    CURLOPT_URL =>$url, 
    CURLINFO_CONTENT_TYPE => "text/xml", 
    CURLOPT_BINARYTRANSFER => TRUE, 
    CURLOPT_RETURNTRANSFER => TRUE 
); 

$ch = curl_init(); 
curl_setopt_array($ch, $opts); 
$data = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

header("Content-Type: application/x-gzip"); 
header("Content-disposition: attachment; filename=zipfile.tar.gz"); 

echo $data; 
?> 
+0

好的工作,我一直在尋找視頻文件,所以我改變它適當的視頻,添加視頻/ MP4的內容類型的工作。還有一個問題,如果視頻尺寸增加(比如說400MB),它會佔用PHP內存嗎? – GoodSp33d

+0

我不知道curl庫是如何工作的。 – wannik

+1

是的,它會吃掉你的記憶,因爲你正在使用'RETURNTRANSFER',所以它會返回到駐留在內存中的變量中。 –

0

也許你缺少header("Content-Transfer-Encoding: binary");

+0

我仍然遇到未知格式錯誤。 – GoodSp33d

+0

這可能是愚蠢的,但我不得不問:你是否在任何地方打印/回顯'$ rt'?你確定沒有更多的印前/印後? –

+0

是的頭後我回應它 – GoodSp33d