2011-10-24 46 views
2

我有一種情況,我需要將文件從一個位置移動到另一個位置。使用cURL,很容易下載文件,然後使用符號中的甜點(即「file_box」=>「@/path/to/myfile.jpg」)上傳它們。我現在要做的是繞過保存步驟中間只是將文件從一個「流」到另一個。這可能嗎?cURL php下載和上傳時未保存在中間

+1

你在上傳什麼? – Brad

+0

您不能使用curl讓一個遠程服務器與另一個遠程服務器對話,除非這些遠程服務器中的任何一個暴露了某些功能。 –

+0

@MarcB如果他使用上傳文件的臨時位置作爲cURL腳本的路徑,爲什麼它不起作用? –

回答

1

當然,你可以做到這一點。我不確定你可以使用cURL作爲POST。你必須研究它的方法,看看它是否會讓你回調下一塊數據。

http://curl.haxx.se/libcurl/php/examples/callbacks.html

$ch = curl_init(); 
curl_set_opt($ch, CURLOPT_HEADERFUNCTION, 'read_header'); 
curl_set_opt($ch, CURLOPT_WRITEFUNCTION, 'read_body'); 

function read_header($ch, $data) { 
    // Ok, so the header is going to come in here. 
    // I assume you will need data, such as MIME type and what not. 
    print_r($data); 
    return strlen($data); //This means that we handled it, so cURL will keep processing 
} 

function read_body($ch, $data) { 
    // This is where the body of the content will be, in chunks. 
    // This function will be called multiple times. 
    print_r($data); 
    return strlen($data); //Again, if we don't do this, cURL will cancel. 
} 

現在的發送部分,似乎你必須自己實現HTTP與fsockopen。在這裏看到更多的信息:PHP How To Send Raw HTTP Packet

0

我現在實際上工作與類似的問題。就我的經驗而言,您必須打開一個文件句柄,並將數據保存到本地,然後才能將其上傳到另一臺服務器。

我知道你是什麼意思的流媒體,因爲你想流/管你正在下載的文件到PUT或POST到另一臺服務器。

我不認爲流媒體是可能的與PHP捲曲。您需要在本地保存文件。然後打開並上傳它。

我已經完成了與Java類似的工作,你實際上正在使用流,所以這可能工作,但我還沒有嘗試過。