asaのブログ

プログラミングの勉強まとめ

Java MySQLに画像データを保存する

 MySQLデータベースに画像などの比較的大きなファイルを保存する際の方法をまとめました。今回は比較的使い慣れているJSPサーブレットを使って実装しました。

 

 BLOB型

 Binary Large Objectの略。その名前の通り大きなバイナリデータを扱うSQLの型になります。今回は画像データBLOB型でMySQLデータベースに保存します。

 

 環境

 ・Netbeans 8.2

 ・MySQL 5.7

 

 データベースの作成

 画像id、画像ファイル名、画像ファイルを登録するデータベースをまず作成します。

 SQL文は下を参考にしてください。

giste2044b12991db630c4c927dbca48e15d

 

 JSPページの作成

 簡素なフォームですが、enctype属性に"multipart/form-data"が指定されているのが重要です。

gista2a7a47e17a8fd6cb138606cf45f4d7a

 

 サーブレットの作成

 まず@MultipartConfigがついていますが、これでファイルの最大値を設定します。後は送信されたデータがInputStreamに流し込まれ、それをデータベースに格納しています。

gist7c5f66a01b27fc93df739fee26d11eae

 

 データベースの確認

 実際にファイルをアップロードした後データベースを確認してみます。BLOB型でデータが保存されています。ダブルクリックすると画像を表示でき、きちんとデータが保存されているのが分かります。

f:id:asa_r:20170706230029p:plain

f:id:asa_r:20170706230126p:plain