私はPHPとカールを使ってhttp POST経由でファイルを送信しようとしています。multipart/form-data csvファイルアップロードPOST PHPカール
基本的なフィールドでは問題はありませんでしたが、ファイルをアップロードしようとしたので、まだ運がありません。私はPHPで次のように使用してみました
curl --header 'Content-Type: multipart/form-data' --header 'auth-token: #.######.##.##########################' -F '[email protected]_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
::私は簡単には以下のコマンドで動作するように取得することができ、端末から
$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
クラスを使ってみましたが、それは私に同じerを与えましたror。
私はWordpressのプラグインの中でこのコードを実行していることに言及する価値はあると思います。
私のPHPコードで何がうまくいかないのは、curlシェルコマンドがうまくいきません。
ありがとうございます。
CURLOPT_POSTFIELDS
HTTP "POST" で送信するには、完全なデータ:ドキュメントから$data
変数
を構築する際に
返信いただきありがとうございます!しかし、http_build_queryまたはjson_encodeを使用する必要があるようですが、私はそれを試してみると、フォーマットが無効であるというエラーが表示されるためです。 –
端末から実行したときにどのような応答が得られますか? – miknik
端末から実行すると、正常に動作します。ファイルはアップロードされ、それが成功メッセージです。問題は私のPHPコードのどこかにあります。 –