e-learning、オラクル研修、LMS(学習管理システム)のiStudy

e-learning、オラクル研修、LMS(学習管理システム)のiStudy

第114回「WEBアプリ作成(12)(イメージファイルの表示の仕方 1/2)」

2014.12.11

こんにちは。インストラクターの蓑島です。
前回までで、いくつかの基本パターンをご紹介しました。今回からは発展的なその他の機能のご紹介です。
本日は題して、「イメージファイルの表示の仕方(1/2)」です。今回と次回でイメージファイルを表示する方法を説明します。

やはり、WEBアプリは、イメージファイルを表示してきれいに楽しく使いたいものですよね。そのような場合、HTMLではイメージタグを用います。イメージタグの基本構文は以下の通りです。

1
< img src = "イメージファイル名" />

簡単な構文ですね。このような記述をいままで行ってきたように、PL/SQLプロシージャでHTP.P(~)により生成すればよいだけです。このこと自体はまったく簡単なことです。

問題はむしろ、イメージファイルをサーバーのどこの場所に配置すればいいのか? という点です。この点については、少し解説を要します。

一般にイメージファイルをどこの場所に配置して認識可能か?については、PL/SQLを使ったWEBアプリの方式により異なります。
すなわち、Oracle HTTP Server(以下、OHS)を使っているのか、それとも、Oracle XML DB のリスナー機能を使っているのか?ということで違うのです。前者(OHS)の場合であれば、OHSの構成ファイル(httpd.conf)の中に、そのディレクトリを指定する記述があります。しかし本メルマガでは、極力簡単というコンセプトなので、OHSを使わず、Oracle DatabbaseだけでWEBアプリを実装する後者の方法、すなわち、Oracle XML DBの方法をとっています。
バックナンバー 第103回「WEBアプリ作成(1) (Oracle DBとPL/SQLだけで、即、WEBアプリ)」参照

後者、すなわちOracle XML DBの場合は、イメージファイルはサーバーの物理的なディレクトリに配置するのではなく、Oracle XML DB内の仮想的なディレクトリに配置します。つまりOSのファイルシステムの中を探し回っても、この場所は存在しておらず、Oracle Databaseの中に存在しています。

こう書くと難しく感じるかもしれませんが、決して難しくありません。そこにアクセスする手順さえ用意すれば、その場所がOracle Databaesの中であると意識せず、ごく普通の方法でアクセスできます。

では今回はその方法として、FTPを使う方法をご紹介します。FTPはサーバーにファイルをアップロードしたり、ダウンロードしたりするために使うツールです。FTPを使ってイメージファイルをWEBアプリで認識可能な場所にアップロードしてみましょう。

まずそのためには、Oracle XML DB用のFTPのポート番号を設定する必要があります。その方法は上記バックナンバー第103回「WEBアプリ作成(1) (Oracle DBとPL/SQLだけで、即、WEBアプリ)」の中で解説しているOracle XML DB用のHTTPポート番号の設定方法と大変よく似ています。

まず、現在、すでにFTPポートが存在しているかどうか、次の問い合わせで確認できます。

1
2
3
4
5
SELECT DBMS_XDB.GETFTPPORT FROM DUAL;
 
GETFTPPORT
----------
       2100

私の場合、ポート2100ですでに構成済みであることがわかります。

もしも、構成されていなければ、この問い合わせは0(またはNULL)が返ります。構成されていない場合、次の手順で構成できます。

SQL> SHOW USER
ユーザーは"SYS"です。

1
2
3
SQL> EXEC DBMS_XDB.SETFTPPORT(2100);
 
PL/SQLプロシージャが正常に完了しました。

これで、FTPのポート番号が2100に設定されました。
FTPのポート番号を変更したい場合も同じ方法です。FTPのポート番号を無効にしたい場合は 0 に設定してください。

FTPのポート番号を設定すると、デフォルトのリスナーに対して自動的にポート番号が登録されます。それはリスナーのステータスを参照すれば確認できます。パス(ORACLE_HOME/bin)の通っているOSのコマンドラインから以下のコマンドで確認します。

OS> lsnrctl status

そこで表示される情報に以下のような内容があればOKです。

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ホスト名)(PORT=2100))(Presentation=FTP)(Session=RAW))

このような表示がされていれば、Oracel XML DB のFTPポート番号がリスナーに登録されたことになります。
ではこれで、FTPを使ってOracle XML DBの仮想ディレクトリにファイルをアップロードできます。

早速やってみましょう。

今回はFTPのツールとして私がよく使っている、フリーソフトのALFTPを使います。

まず、FTPツールを起動して、接続処理をします。そうすると、接続するための情報が求められますので、画面のように入力します。ご覧のように、ポート番号は2100です。ここで特に意識していただきたいのは、ログインするユーザです。
OSのユーザではなく、Oracleデータベースのユーザです。権限のあるユーザでないと、アップロードできません。Oracle XML DBのアクセス制御リスト(ACL)で操作の種類ごとの権限が必要です。詳細になりますのでとりあえず、DBAロールを付与された管理者(SYSTEMユーザなど)でログインしてください。

ログインするとそこはもう、Oracle XML DBの中の世界です。

では、Oracle XML DBの中の世界に、PCからイメージファイルをアップロードしてみます。

ご覧のように、onchan.pngというイメージファイルがアップロードできました。これは私がとった写真のイメージファイルです。

これで、<img src="/onchan.png">というタグの記述で、イメージを表示できるわけです。

ではこの続きは次回にいたします。次回は汎用的にパラメータで指定されたイメージファイルを自由に大きさを変えて表示できるPL/SQLプロシージャを作成したいと思います。

ではご期待ください。

先頭へ戻る