あるエンジニアの独り言
MySQLのBLOBに入ったPDFを表示する
最終更新:
paladin
-
view
2010/01/05
MySQLでBLOB型の列にPDFファイルを挿入して、ブラウザで取り出して
表示する方法を友人に聞かれて答えられなかったので調べてみた。
表示する方法を友人に聞かれて答えられなかったので調べてみた。
BLOBについて簡単におさらい。
BLOB は様々な大きさのデータを保持する事ができる大きいバイナリオブジェクトです。
4つの BLOB タイプは、TINYBLOB、 BLOB、MEDIUMBLOB、そしてLONGBLOB です。
MySQL5.1リファレンスマニュアルより
DBに格納するところまではできたそうなので、取り出すところだけやってみる。
テーブル構造はこんな感じ
DB名:blobtest
テーブル名:test
DB名:blobtest
テーブル名:test
フィールド | 種別 | 備考 |
id | int | 一意になるコード |
data | longblob | 今回の本命、バイナリデータ |
格納データはこんな感じで準備
id | data |
0 | (PDFデータ) |
1 | (画像データ) |
いずれもネットで拾ってきたデータ。
PHPのファイルはバイナリデータそのものを返す"view_data.php"
バイナリデータを呼び出す"view_main.php"の2ファイルを用意。
バイナリデータを呼び出す"view_main.php"の2ファイルを用意。
view_data.php
- <?php
- header('Content-type: application/pdf');
-
- //MySQLサーバに接続
- $con = mysql_connect("server", "user", "password");
- IF (!$con){
- print("MySQLへの接続に失敗しました");
- exit;
- }
-
- //DB接続
- IF (!mysql_select_db("blobtest")){
- print("データベースへの接続に失敗しました");
- exit;
- }
-
- $sql = "select data from test where id=0";
-
- $result = mysql_query($sql);
-
- $row = mysql_fetch_array($result);
-
- echo $row[0];
-
- ?>
view_main.php
- <html>
- <head>
- <meta http-equiv=”Content-TYPE” content=”text/html; charset=UTF-8”>
- <title>PDF表示</title>
- </head>
- <body>
- <a href="view_data.php" target="new">PDF表示</a>
- </body>
- </html>
※ここまで書いて気づいたけど、"view_main.php"はただのHTMLでよかった。
ファイルは別窓に表示したいということだったので、
a タグには target="new" を入れている。
もしクリックした時に表示ではなくダウンロードにしたいなら、
"view_data.php"の3行目に下記の1行を追加すればOK。
a タグには target="new" を入れている。
もしクリックした時に表示ではなくダウンロードにしたいなら、
"view_data.php"の3行目に下記の1行を追加すればOK。
- header('Content-Disposition: attachment; filename="downloaded.pdf"');
最低限のことしか記述してないけど、伝わると幸いです。
今回はここまで。
今回はここまで。
=============== <<<ここから宣伝(自動追加)>>> ===============