ver.2サポートサイト

HOMEAPIサンプルプログラムサンプルプログラム(API1.1)ファイル(トークン作成/アップロード/ダウンロード)

ファイル(トークン作成/アップロード/ダウンロード)

cURLライブラリを使用して、ファイルトークン作成、ファイルアップロード、ファイルダウンロードをするサンプルプログラムです。
PHPにcurlライブラリが組み込まれている必要があります。

ファイルアップロードトークン作成

<?php

//SPIRAL Ver2のAPI用のURL
$base_url = "https://api.spiral-platform.com/v1/apps";
$url = $base_url."/{app}/dbs/{db}/{field}/files/uploadToken";

 

//APIキー
$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

 

//ヘッダ
$header = array(
"Authorization:Bearer ".$apikey,
"Content-Type:application/json",

"X-Spiral-App-Authority"."manage",
);

 

//ボディ
$body = [
];

 

//配列をjson形式に変換
$json_body = json_encode($body);

 

// curlライブラリを使用して送信
//セッションを初期化する
$curl = curl_init();

 

//実行結果を文字列で取得できるように設定
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//urlを指定
curl_setopt($curl, CURLOPT_URL , $url);
//ヘッダを指定
curl_setopt($curl, CURLOPT_HTTPHEADER , $header);
//ボディを指定
curl_setopt($curl, CURLOPT_POSTFIELDS , $json_body);
//メソッドを指定
curl_setopt($curl, CURLOPT_CUSTOMREQUEST , 'POST');

 

//セッションを実行し、その結果を取得
$response = curl_exec($curl);

 

//cURLのエラーメッセージを表示
if (curl_errno($curl)) echo curl_error($curl);

 

//セッションを閉じる
curl_close($curl);

 

//json形式を配列に変換してアップロードトークンを取得
$arrres = json_decode($response , true);
$filetoken = $arrres["fileUploadToken"];

 

?>

ファイルアップロード

※レコード登録時に、アップロード後に取得できるファイルキーをレコードに関連づけることで、レコードにファイルが紐づいて登録されます。

<?php

//ファイル情報取得
$filepath = "xxxx";
$filedata =file_get_contents($filepath);
$filetype = mime_content_type($filepath);
$filename = pathinfo($filepath, PATHINFO_BASENAME);

$url = $base_url."/{app}/dbs/{db}/{field}/files";


$multipart_boundary = "SPIRALV2_MULTIPART_BOUNDARY";

 

//ヘッダ
$fileupheader = array(
"Authorization:Bearer " . $apikey,
"X-Spiral-App-Authority:manage",
"Content-Type: multipart/form-data; boundary=" . $multipart_boundary . "",
);

// POSTデータを生成します
$postdata = "--" . $multipart_boundary . "\r\n";
$postdata .= "Content-Disposition: form-data; name=\"file\"; filename=\"" . $filename . "\"\r\n";
$postdata .= "Content-Type: " . $filetype . ";\r\n\r\n";
$postdata .= $filedata;
$postdata .= "\r\n";
$postdata .= "--" . $multipart_boundary . "\r\n";
$postdata .= "Content-Disposition: form-data; name=\"fileUploadToken\"\r\n\r\n";
$postdata .= $filetoken;
$postdata .= "\r\n";
$postdata .= "--" . $multipart_boundary . "--\r\n";

// curlライブラリを使って送信します。
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($curl, CURLOPT_HTTPHEADER, $fileupheader);
curl_exec($curl);
$upresponse = curl_multi_getcontent($curl);
curl_close($curl);
$arrUpres = json_decode($upresponse , true);

 

//ファイルキー取得
$fileKey = $arrUpres["fileKey"];


?>

ファイルダウンロード

<?php
//SPIRAL Ver2のAPI用のURL
$base_url = "https://api.spiral-platform.com/v1/apps";
$url = $base_url . "/{app}/dbs/{db}/{field}/{recordId}/files/{fileKey}/download";

 

//APIキー
$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

 

//ヘッダ
$header = array(
"Authorization:Bearer ".$apikey,
);

 

// curlライブラリを使用して送信
$curl = curl_init($url);
//実行結果を文字列で取得できるように設定
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//ヘッダを指定
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
//セッションを実行し、その結果を取得
$data = curl_exec($curl);
//cURLのエラーメッセージを表示
if (curl_errno($curl)) echo curl_error($curl);
//セッションを閉じる
curl_close($curl);

//データにダウンロードするヘッダーを付与して出力
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
echo $data;
?>