【发布时间】:2017-10-14 21:57:58
【问题描述】:
我正在尝试使用 PHP 和 curl 通过 http POST 发送文件。
我在使用基本字段时没有遇到任何问题,但是由于我尝试上传文件,我仍然没有运气。
从终端我可以很容易地使用以下命令使其工作:
curl --header 'Content-Type: multipart/form-data' --header 'auth-token: #.######.##.##########################' -F 'file=@test_csv.csv' -F 'command=import' -F 'parameters={"contact-list_code": "1", "separator": ",", "header": false, "file_columns": [{"Position":"0", "Field":"1", "Rule":"3"}, {"Position":"1", "Field":"14", "Rule":"3"} ] }' http://api.com/method
我尝试在 php 中使用以下内容:
$file = '@'.realpath(dirname( __FILE__ ) . '/exports/test_csv.csv');
$data = http_build_query(array(
"command" => "import",
"file" => $file,
"parameters" => array(
"contact-list_code" => "1",
"separator" => ",",
"header" => false,
"file_columns" => array(
array(
"Position" => "0",
"Field" => "1",
"Rule" => "3"
),
array(
"Position" => "1",
"Field" => "14",
"Rule" => "3"
)
)
)
));
$authToken = '#.######.##.##########################';
$serviceHandler = curl_init();
curl_setopt($serviceHandler, CURLOPT_URL, 'http://api.com/method');
$headers = array();
$headers[] = "Content-Type: multipart/form-data";
$headers[] = "Auth-Token: ".$authToken;
curl_setopt($serviceHandler, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($serviceHandler, CURLOPT_POST, TRUE);
curl_setopt($serviceHandler, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($serviceHandler, CURLOPT_POSTFIELDS, $data);
curl_setopt($serviceHandler, CURLOPT_HTTPHEADER, $headers);
print_r(json_decode(curl_exec($serviceHandler)));
这是我收到的错误:Error handling data from http request
我还尝试对文件使用 CURLFile 类,而不是对文件使用 @,但是它给了我同样的错误。
我认为值得一提的是,我在 Wordpress 插件中运行此代码。
我想知道我的 php 代码出了什么问题,因为 curl shell 命令很好。
谢谢。
【问题讨论】:
标签: php wordpress curl post multipartform-data