MySQLに画像を登録して表示する
今回はXAMPPを使用してます。
まずMySQLでテーブルを作成します。
CREATE TABLE IMAGES ( ID INT NOT NULL AUTO_INCREMENT, // ID IMG MEDIUMBLOB NOT NULL, // 画像データ PRIMARY KEY ( ID ) )
画像の登録画面(img_upload.php)
データベースへのアップロードも同時に行います。
<HTML> <HEAD> <meta charset=UTF-8"> <title>画像登録&アップロード</title> </HEAD> <BODY> <FORM method="POST" enctype="multipart/form-data" action="img_upload.php"> <P>画像登録&アップロード</P> 画像パス:<INPUT type="file" name="upfile" size="30"><BR> <INPUT type="submit" name="submit" value="送信"> </FORM> <?php if (count($_POST) > 0 && isset($_POST["submit"])){ $upfile = $_FILES["upfile"]["tmp_name"]; if ($upfile==""){ print("ファイルのアップロードができませんでした。<BR>"); exit; } // ファイル取得 $imgdat = file_get_contents($upfile); $imgdat = mysql_real_escape_string($imgdat); // DB接続 $dbLink = mysql_connect("ホスト名","ユーザー名","パスワード"); if (!$dbLink){ echo "接続失敗"; } // DB選択 mysql_select_db("image",$dbLink); // データ追加 $sql = "INSERT INTO IMAGES (IMG) VALUES ('$imgdat')"; $result = mysql_query($sql, $dbLink); if (!$result){ print("SQLの実行に失敗しました<BR>"); print(mysql_errno().": ".mysql_error()."<BR>"); exit; } print("登録が終了しました<BR>"); } ?> </BODY> </HTML>
アップロードした画像を表示するためには、表示画面と画像取得の2つが必要です。
画像取得(img_get.php)
<?php // DB接続 $dbLink = mysql_connect("ホスト名","ユーザー名","パスワード"); if (!$dbLink){ echo "接続失敗"; } //DB選択 mysql_select_db("image",$dbLink); // 画像データ取得 $sql = "SELECT IMG FROM IMAGES WHERE ID = '" . $_GET['id']."'"); $result = mysql_query($sql, $dbLink); $row = mysql_fetch_row($result); // 画像ヘッダとしてjpegを指定(取得データがjpegの場合) header("Content-Type: image/jpeg"); // バイナリデータを直接表示 echo $row[0]; ?>
画像表示(display.php)
<HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>画像表示</title> </HEAD> <BODY> <FORM method="POST" action="display.php"> <P>画像の表示</P> ID:<INPUT type="text" name="id"> <INPUT type="submit" name="submit" value="送信"> <BR><BR> </FORM> <?php if (count($_POST) > 0 && isset($_POST["submit"])){ $id = $_POST["id"]; if ($id==""){ print("IDが入力されていません。<BR>\n"); } else { print("<img src=\"img_get.php?id=" . $id . "\">"); } } ?> </BODY> </HTML>
画像表示画面で、IDを入力すると画像が表示されます。