DBへ画像を登録
最終更新日:2023年02月21日
画像をbase64でエンコードしたデータを使い、DBへ登録するサンプルプログラムです。
本サンプルプログラムは外部呼出し(スパイラル以外のサーバから動作させる場合)と内部呼出し(スパイラル内部で動作させる場合)と分けて記載をしています。 利用する用途によって使用するサンプルプログラムの使い分けを行ってください。
※外部呼出しに利用するサンプルプログラムにはスパイラル内のWebコンポーネントで使用できない関数などが含まれる場合がありますのでご注意ください。
使用できないPHPの関数について、PHP利用時の注意事項をご覧ください。
※内部呼出しを利用する場合はアカウント内APIの設定を「ON」に変更する必要があります。
外部呼出しを利用する場合
<?php
/*
* DBタイトル:
* items
*
* フィールド:
* No1 フィールド名 :アイテムコード
* フィールドタイプ:数字記号アルファベット32bytes
* 差替えキーワード:itemcode
*
* No2 フィールド名 :アイテム画像
* フィールドタイプ:画像フィールド
* 差替えキーワード:image
* 画像データ:iVBORw0KG...SUVORK5CYII=
* 画像データはあらかじめbase64でエンコードしておきます。
*
*/
// API用のURL
$APIURL = "https://xxxxxx/api/service";
// スパイラルの操作画面で発行したトークンを設定します。
$TOKEN = "xxxxxxxxxxxx";
$SECRET = "xxxxxxxxxxxx";
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: database/insert/request",
"Content-Type: application/json; charset=UTF-8",
);
// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["db_title"] = "items"; //DBのタイトル
$parameters["passkey"] = time(); //エポック秒
// データ
$parameters["data"] = array(
array("name" => "itemcode", "value" => "10099"), //主キー
array("name" => "image", "value" => "iVBORw0KG...SUVORK5CYII=", "attribute" => array("img_name" => "item10099.jpeg", "img_content_type" => "image/jpeg")), //画像型フィールド
);
// 署名を付けます
$key = $parameters["spiral_api_token"] ."&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// 送信用のJSONデータを作成します。
$json = json_encode($parameters);
// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST , true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
$resdata = json_decode($response, true);
?>
内部呼出しを利用する場合
<?php
//============================================
// 画像データを1行登録
//============================================
// APIコミュニケータをセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();
// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("db_title" , "items" );//DBタイトル
$request->put("data" , array(
array("name" => "itemcode", "value" => "10099"),
array("name" => "image", "attribute" => array("img_name" => "item10099.jpeg", "img_content_type" => "image/jpeg"), "value" => "iVBORw0KG...SUVORK5CYII=")
)
);//画像型フィールド
// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("database", "insert", $request);
// レスポンスの取得
if($response->get("code") == 0){
echo "<p>database/insert 正常終了。(code:".$response->get("code").")</p>";
} else {
echo "<p>database/insert エラーが発生しました。(code:".$response->get("code").")</p>";
}
print_r($response);
?>