php - 如何使用 PHP cURL XML 调用附加文件

标签 php xml curl

我正在使用 Amazon AIMS API 上传库存文件,但我在使用 cURL 调用上传文件时遇到问题。文档非常有限,因此没有示例代码可以帮助解决这个问题。

这是我到目前为止的 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);

我尝试将 $inventory 放入 CURLOPT_POSTFIELDS 而没有 INFILE,但我得到了同样的错误。

在 XML 响应中,我收到“NO_FILE_ATTACHED”,因此明显的问题是将文件附加到 XML 调用。

我还尝试按照第一响应者的说法使用 php.net 上 curl_setopt 页面上的示例 #2 进行上传。

为此,我使用了以下代码:

$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);

我得到了相同的 NO_FILE_ATTACHED 响应。

有什么想法吗?

最佳答案

这对我有用:

$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);

关于php - 如何使用 PHP cURL XML 调用附加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1134313/

相关文章:

php - laravel query builder 如何在 wherein 函数中使用 like

c# - 在 C# 中反序列化 XML 时出错

javascript - 看不见的字符不允许我解析 xml

ruby - 在 64 位 Windows 8.1 上构建 native gem 'curb' 失败 : 'checking for curl-config... no'

authentication - 没有密码的NTLM代理?

c# - 在 curl 中制定 POST 请求

PHP 版本 5.2.14/解析错误 : syntax error, unexpected T_FUNCTION, expecting ')'

php - postgres 中一些带双引号的列和一些不带双引号的列

php - 在 url 中获取产品名称而不是 id php

php - 寻找有关计算机科学类(class)项目的想法