2009-07-15 8 views
3

Amazon AIMS APIを使用してインベントリファイルをアップロードしています。ファイルをアップロードするためのcURL呼び出しに問題があります。ドキュメンテーションは非常に限られているので、これを手助けするサンプルコードはありません。PHP cURL XMLコールを使用してファイルを添付するには

これは私がこれまでのcURLコールの持っているものです。

// $FILENAME is filename of the CSV file being uploaded: 

$inventory = fopen($FILENAME, 'r') or die("Can't open file!"); 
echo $inventory; 

curl_setopt($ch, CURLOPT_URL, $URL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_INFILE, $inventory); 
curl_setopt($ch, CURLOPT_POSTFIELDS, ''); 
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filename)); 
curl_setopt($ch, CUROPT_PUT, TRUE); 


$response = curl_exec($ch); 
curl_close($ch); 

私はCURLOPT_POSTFIELDSに$インベントリを入れて試してみて、INFILEを持っていないが、私は同じエラーを取得しました。

XMLレスポンスでは、「NO_FILE_ATTACHED」と表示されています。そのため、ファイルがXML呼び出しに添付されるという問題があります。

また、php.netのcurl_setoptページのExample#2を使って最初の応答者としてアップロードを試みました。そのために

、私は次のコードを使用:私は戻って同じNO_FILE_ATTACHED応答を得た

$data = array('@/tmp/amazon_export.csv'); 

curl_setopt($ch, CURLOPT_URL, $URL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 


$response = curl_exec($ch); 
curl_close($ch); 

を。

アイデア?

答えて

3

これは私の作品:

$hCurl = curl_init(); 
curl_setopt($hCurl, CURLOPT_PUT,   true); 
curl_setopt($hCurl, CURLOPT_HEADER,   true); 
curl_setopt($hCurl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($hCurl, CURLOPT_CONNECTTIMEOUT, CURL_TIMEOUT_SECS); 
curl_setopt($hCurl, CURLOPT_URL,   "$oMessage->url/att/$fid"); 
curl_setopt($hCurl, CURLOPT_HTTPHEADER,  $aCurlHeaders); 
// TODO it could be possible that fopen() would return an invalid handle or not work altogether. Should handle that 
$fp = fopen ($finfo['tmp_name'], "r"); 
curl_setopt($hCurl, CURLOPT_INFILE,   $fp); 
curl_setopt($hCurl, CURLOPT_INFILESIZE,  $finfo['size']); 

$sResp = curl_exec($hCurl); 
0

PUTPOSTを1回のカール操作で結合しても機能しません。 POSTを使用してファイルをアップロードする方法の例については、curl_setoptマニュアルページのexample #2を参照してください。

+0

を支援私はまだこれと同じNO_FILE_ATTACHEDエラーを取得しています: $ data = array( '@/tmp/amazon_export.csv'); curl_setopt($ ch、CURLOPT_URL、$ URL); curl_setopt($ ch、CURLOPT_RETURNTRANSFER、1); curl_setopt($ ch、CURLOPT_POST、1); curl_setopt($ ch、CURLOPT_POSTFIELDS、$ data); 例のとおりです。 –

0

あなたは$ファイル名と$ FILENAMEを持って、ファイルサイズの呼び出しは、あなたのケースのファイルサイズ($のFILENAME)にする必要があります...

ホープザッツ

関連する問題