.NET TIPS [ASP.NET]バイナリ・データをアップロードしてデータベースに登録するには?山田 祥寛2005/01/21 |
![]() |
|
文字列や数値のような単純なテキスト・データだけでなく、Excelワークシート、Word文書、PDF文書などのバイナリ・データをデータベース・サーバで管理したいというケースは意外と多い。業務フローの主体が次第にWebシステムに重心を移してきたとはいっても、表現力に富んだOffice製品を業務で利用する機会が減ってきたわけではないし、手元で作成したドキュメントをWeb上でそのまま交換したいというケースは多くあるからだ。
もちろん、そうした場合にも、必ずしもデータベースを持ち出さなければならないというわけではない。サーバ上の特定の場所にファイル・アップロード用のスペースを用意し、ファイル・システム上でデータを管理するという選択肢ももちろんある。しかし、この方法では適切にアクセス権限を設定しないと、不特定多数のユーザーにアップロードしたファイルが見えてしまうという欠点がある。特にワークフロー上で交換するファイルは、ユーザーごとの細かなアクセス制御が必要となることが多く、ファイル・システム上で制御するには何かと設定が面倒だ。
そのような場合には、バイナリ・データをデータベース上で管理することを検討するとよい。いまさらいうまでもなく、データベースならば、ファイル・システム上にそのままファイルを配置するよりも安全であるし、アクセス権限も制御しやすい。
そこで本稿では、ブラウザ上からアップロードしたファイルをデータベースに登録する方法について紹介することにしよう。本稿のサンプルを利用するに際しては、あらかじめデータベースに以下のようなimage_dataテーブルを作成しておく必要がある。
フィールド名 | データ型 | 概要 |
id | INT | ドキュメントID(主キー/連番) |
title | VARCHAR(100) | ファイル名 |
type | VARCHAR(50) | MIMEタイプ |
datum | IMAGE | バイナリ・データ |
![]() |
||
image_dataテーブルのフィールド・レイアウト |
それでは、具体的なコードを眺めてみよう。
|
|
バイナリ・データをデータベースに登録するための.aspxファイル(C#の場合) |
|
|
バイナリ・データをデータベースに登録するための.aspxファイル(VB.NETの場合) |
以上の.aspxファイルの実行結果は、以下のとおりだ。
![]() |
サンプル・プログラムを実行したところ |
[参照]ボタンで画像ファイル(この例では.jpgファイル)などのバイナリ・データを選択し、[アップロード]ボタンをクリックする。これにより、バイナリ・データがサーバ側にアップロードされ、データベースに格納される。 |
このWebページ上で画像ファイルなどのバイナリ・データを指定してアップロードしてみよう。以下のようにそのバイナリ・データがデータベースに登録されているのが確認できるはずである。
![]() |
ブラウザで指定したファイルをデータベース側で確認 |
ここではデータベースとしてMSDEを利用しているものとする。上の画面は、MSDEの中身をMicrosoft Accessのプロジェクト経由で参照したもの。プロジェクトについては、Windows TIPS「AccessをMSDEのフロントエンドとして利用する」を参照いただきたい。 |
上記のサンプル・コードをご覧いただいても分かるように、バイナリ・ファイルを扱うといっても、さほど難しいことではない。ポイントとなるのは、HttpPostedFileクラス(System.Web名前空間)のInputStreamプロパティを介して、アップロード・ファイルをいったんbyte配列に格納しておく必要がある点だ。byte配列に格納してしまえば、後は通常のテキストと同様の要領でデータベースに格納できる。
このようにしてデータベースに登録したデータを、再びWebフォーム上から呼び出す方法については、「TIPS:[ASP.NET]データベースに登録したバイナリ・データを表示するには?」で紹介している。
カテゴリ:Webフォーム 処理対象:データベース カテゴリ:Webフォーム 処理対象:ファイル・アップロード 使用ライブラリ:HttpPostedFileクラス(System.Web名前空間) 関連TIPS:[ASP.NET]データベースに登録したバイナリ・データを表示するには? |
![]() |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |