2011-10-24 9 views
2

私はある場所から別の場所にファイルを移動する必要がある状況があります。 cURLを使用すると、ファイルをダウンロードして、シンボル「file_box」=>「@/path/to/myfile.jpg」でスイートを使用してアップロードするのが簡単です。私が今行っているのは、中央からファイルを一方から他方に「ストリーム」するだけです。これは可能ですか?cURL phpをダウンロードしてアップロードせずにアップロードする

+1

あなたは何にアップロードしていますか? – Brad

+0

curlを使用して、1つのリモートサーバーが別のリモートサーバーと通信することはできません。 –

+0

@MarcBファイルがcURLスクリプトのパスとしてアップロードされた一時的な場所を使用した場合、なぜ動作しませんか? –

答えて

1

確かに、あなたはそれを行うことができます。私はあなたがPOSTのためにcURLを使用することができるかどうかはわかりません。そのメソッドを調べて、次にデータのチャンクをコールバックできるかどうかを調べる必要があります。

$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://curl.haxx.se/libcurl/php/examples/callbacks.html

は今すぐ送信部のために、あなたが fsockopenでHTTPを自分で実装する必要がありますようです。詳細については、ここをクリックしてください。 PHP How To Send Raw HTTP Packet

0

実際に私は実際に同様の問題を扱っています。私の経験では、ファイルハンドルを開いて別のサーバーにアップロードする前にデータをローカルに保存する必要があります。

PUTまたはPOSTにダウンロードしているファイルを別のサーバーにストリーム/パイプしたいので、ストリーミングの意味を理解しています。

私はPHPのカールでストリーミングが可能だとは思わない。ファイルをローカルに保存する必要があります。それを開いてアップロードしてください。

私はJavaで同様の仕事をしています。実際にはストリームを使用しているので、うまくいくかもしれませんが、試してみることはできません。

関連する問題