2009-07-15 4 views
3

Amazon AIMS API를 사용하여 인벤토리 파일을 업로드하고 파일 업로드를위한 cURL 호출에 문제가 있습니다. 문서가 매우 제한되어 있으므로이 코드에서 도움이되는 예제 코드는 없습니다.PHP cURL XML 호출로 파일을 첨부하려면 어떻게합니까

이것은 내가 지금까지 컬을 호출이 무엇 :

// $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 페이지에서 예제 # 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

은 나를 위해 작동 나는 여전히 이와 동일한 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

단일 컬 작업에서 PUTPOST을 결합하면 작동하지 않습니다. POST를 사용하여 파일을 업로드하는 방법에 대한 예제는 curl_setopt 매뉴얼 페이지 example #2을 참조하십시오. 당신의 파일 크기의 통화가의 경우 파일 크기 ($ 파일 이름)에 있어야 $ 파일 이름과 $ FILENAME이

$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

하는 데 도움이 : –

0

...

희망 이잖아