ver.1サポートサイト


マルチパート形式(PHP)

最終更新日:2023年02月22日

ファイル型フィールドを含むレコードの挿入時などバイナリファイルをAPIで送信する必要がある場合は、マルチパート形式でAPIリクエストを送信してください。

詳しくはファイル型などバイナリデータを含む場合も合わせて参照して下さい。

外部呼出しを利用する場合

<?php
// API接続用パラメータ define("API_URL", "https://xxx.smp.ne.jp/api/service"); define("API_TOKEN", "00000000KrJb7fe999032bcf729fc85099afcc4a433exxxxxxxx"); define("API_SECRET", "00000000a36b676c133af4ed88622b8bxxxxxxxx"); define("MULTIPART_BOUNDARY", "SPIRAL_API_MULTIPART_BOUNDARY"); define("DATA_NAME", "Test Data"); define("FILE_FIELD", "facefile"); (count($argv) > 1) or die("Usage: php filetype_sample.php <file_path_to_be_uploaded>\n"); // API用のHTTPヘッダ $api_headers = array(     "X-SPIRAL-API: database/insert/request",     "Content-Type: multipart/form-data; boundary=" . MULTIPART_BOUNDARY, ); // 送信するJSONデータを作成 $parameters = array(); $parameters["spiral_api_token"] = API_TOKEN; //トークン $parameters["db_title"] = "filetypesample"; //DBのタイトル $parameters["passkey"] = time(); //エポック秒 $parameters["data"] = array(array("name" => "name", "value" => DATA_NAME)); // 署名を付けます $key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"]; $parameters["signature"] = hash_hmac('sha1', $key, API_SECRET, false); // POSTデータを生成します $postdata = "--" . MULTIPART_BOUNDARY . "\r\n"; $postdata .= "Content-Type: application/json; charset='UTF-8';\r\n"; $postdata .= "Content-Disposition: form-data; name='json'\r\n\r\n"; $postdata .= json_encode($parameters); $postdata .= "\r\n\r\n"; $postdata .= "--" . MULTIPART_BOUNDARY . "\r\n"; $postdata .= "Content-Type: application/octet-stream;\r\n"; $postdata .= "Content-Disposition: form-data; name='" . FILE_FIELD . "'; filename='" . $argv[1] . "'\r\n\r\n"; $postdata .= file_get_contents($argv[1]); $postdata .= "\r\n\r\n"; $postdata .= "--" . MULTIPART_BOUNDARY . "--\r\n"; // curlライブラリを使って送信します。 $curl = curl_init(API_URL); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers); curl_exec($curl); $response = curl_multi_getcontent($curl); curl_close($curl); // 結果を表示 echo mb_convert_encoding(print_r(json_decode($response, true), true), 'CP932', 'UTF-8'); ?>

内部呼出しを利用する場合

内部呼出しはシングルパート形式のリクエストとなるため利用できません。外部呼出しをご利用ください。