第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プロシージャを作成したいと思います。
ではご期待ください。