kintoneのデータに添付した画像ファイルを、PHPで表示します。
kintone接続のキホン
PHPから kintoneに接続するサンプルは、こちらのサイトなどが参考になります。
次のようなプログラムを作成します。
<?php
define("API_TOKEN", "");
define("SUB_DOMAIN", "");
define("APP_NO", "");
//サーバ送信するHTTPヘッダを設定
$context = stream_context_create(array (
'http'=>array(
'method'=>'GET',
'header'=> "X-Cybozu-API-Token:". API_TOKEN ."\r\n"
)
));
$id = 1; // 取得したいレコード番号
$param = 'app=' . APP_NO . '&id=' . $id;
$contents = file_get_contents('https://' . SUB_DOMAIN . '.cybozu.com/k/v1/record.json?' . $param, FALSE, $context);
// 正常に動作しない場合は、以下のコメントを外してください
//var_dump($http_response_header);
$data = json_decode($contents, true);
$data = $data['records'];
fileKeyを取得する
ファイルを取得するには、添付ファイルのフィールドの中の「fileKey」が必要です。
$data['添付ファイル']['value'][0]['fileKey'];
ファイルを取得する
続いて、ファイルを取得します。file.json
にfileKey
を渡して取得します。
$param = 'fileKey=' . $data['添付ファイル']['value'][0]['fileKey'];
$contents = file_get_contents('https://' . SUB_DOMAIN . '.cybozu.com/k/v1/file.json?' . $param, false, $context);
すると、「$contents」にファイルの内容がそのまま入ります。これを、<img>
タグで表示させたいのですが、ここでは Base64にエンコードしてsrc
属性にそのまま入れ込みます。
<img src="data:image/jpeg;base64,<?= base64_encode($contents);">
これで、画像が表示されます。