PHPでマルチパートPOSTを使用してcsvファイルといくつかのPOSTフィールドをHTTPPUTし、RESTAPIエンドポイントにCurlする必要があります。
ファイルのアップロードの内容は、変数$listに保存されます。もう1つのエンドポイントは$urlです。
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PUT, true);
$post = array(
//Other Post fields array
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$fh = fopen('php://memory', 'rw');
fwrite($fh, $list);
rewind($fh);
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($list));
$response = curl_exec($ch);
上記のコードは機能しているようですが、唯一の問題は、他のエンドポイントがファイルのアップロードに特定のフィールド名を必要とすることです。ファイル名を設定するにはどうすればよいですか?
私は何か間違ったことをしていますか?
これは彼らがAPIで言及したPUTフォーマットです
Content-Disposition: form-data; name="list[csv]"; filename="RackMultipart20110923-63966-hfpyg"
Content-Length: 33
Content-Type: text/csv
Content-Transfer-Encoding: binary
xxxx
yyyy
zzzz
-------------MultipartPost
Content-Disposition: form-data; name="list[list_type]"
Blacklist
-------------MultipartPost--