スパイラル サポートサイト

powered by SPIRAL PLACE®

HOME > 機能 > サンプルプログラム(PHP)>カスタムモジュール

カスタムモジュール(PHP)


カスタムモジュールにファイルをアップロードするサンプルプログラムです。
スパイラルAPIについてはリファレンスを参照して下さい。
※本サンプルプログラムはスパイラル以外のサーバ内に設置することを想定しております。
 スパイラル内のWebコンポーネントで使用できない関数などが含まれる場合がありますので、ご注意ください。
 使用できないPHPの関数について、PHP利用時の注意事項をご覧ください。



PHPファイルをアップロードする


<?php

// API接続用パラメータ
define("API_URL", "http://xxxxxx.smp.ne.jp/api/service");
define("API_TOKEN", "xxxx");
define("API_SECRET", "xxxx");
define("MULTIPART_BOUNDARY", "SPIRAL_API_MULTIPART_BOUNDARY");

//アップロードするファイル
$upurl = "xxxxxx.php";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $upurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$filedata = curl_exec($ch);
curl_close($ch);

// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: custom_module/upload/request",
"Content-Type: multipart/form-data; boundary=\ . MULTIPART_BOUNDARY . "\,
);

// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = API_TOKEN; // トークン
$parameters["passkey"] = time(); // エポック秒
$parameters["dir"] = "xxxx/xxxxx"; // ディレクトリ

// 署名を付けます
$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/x-httpd-php;\r\n";
$postdata .= "Content-Disposition: form-data; name=\"src\"; filename=\"xxxxxx.php\"\r\n\r\n";
$postdata .= $filedata;
$postdata .= "\r\n\r\n";
$postdata .= "--" . MULTIPART_BOUNDARY . "--\r\n";
$postdata .= "\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);

?>