0

私はphp curlを使用して、オープンスタックのAPIを呼び出してオブジェクトを保存しています。私のcurl呼び出しは次のようになります

 $token = $this->getToken();       
 $url = 'http://myfilestorageurl.com/v1/AUTH_volume/container/dummyfile.pdf';    

dummyfile.pdf は、保存されたファイルを呼び出すファイル名です。

    $ch=curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'X-Auth-Token:'.$token,
        'Content-Length: 5611',      //not sure if its required
        'X-HTTP-Method-Override: PUT',   //not sure if its required
        'Content-Location:/data/dummyfile.pdf'
    ));


    curl_setopt($ch, CURLOPT_URL, $url_call);
    curl_setopt($ch, CURLOPT_HEADER, TRUE);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");     
    $response = curl_exec($ch);

応答が 408 Request Timeout を返し続ける

誰かがこれを理解しましたか。また、コンテンツの場所のヘッダーを使用してアップロードするファイルの場所を正しく指定していますか、それとも別の方法がありますか。

4

1 に答える 1

1

同じ問題を抱えている人のために、次の方法で問題を解決しました。

 $url = 'http://myurltouploadfileto.com';
 $fp = fopen('http://urlToFileToUpload.com');
 $ch=curl_init();
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Auth-Token:sometoken'));
 curl_setopt($ch, CURLOPT_PUT, true);
 curl_setopt($ch, CURLOPT_INFILE, $fp);     //this was the main one that i was missing
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, TRUE);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");    

これで問題が解決し、URL からオブジェクト ストレージ サーバーにファイルがアップロードされたようです。

于 2013-07-11T23:57:14.950 に答える