ver.1サポートサイト


カスタムモジュールのアップロード(PHP)

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

カスタムモジュールにファイルをアップロードするサンプルプログラムです。

スパイラルAPIについてはリファレンスを参照して下さい。

※本サンプルプログラムはスパイラル以外のサーバ内に設置することを想定しております。

スパイラル内のWebコンポーネントで使用できない関数などが含まれる場合がありますので、ご注意ください。

使用できないPHPの関数について、PHP利用時の注意事項をご覧ください。

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

<?php

// API接続用パラメータ
define("API_URL", "https://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";
$postdata .= "Content-Type: application/json; charset=\"UTF-8\";\r";
$postdata .= "Content-Disposition: form-data; name=\"json\"\r\r";
$postdata .= json_encode($parameters);
$postdata .= "\r\r";
$postdata .= "--" . MULTIPART_BOUNDARY . "\r";
$postdata .= "Content-Type: application/x-httpd-php;\r";
$postdata .= "Content-Disposition: form-data; name=\"src\"; filename=\"xxxxxx.php\"\r\r";
$postdata .= $filedata;
$postdata .= "\r\r";
$postdata .= "--" . MULTIPART_BOUNDARY . "--\r";
$postdata .= "\r";

// 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);

?>