ここでは、ファイル転送ライブラリを利用したサンプルWebアプリケーション「サンプルファイル転送WebAP」の解説を記述します。
サンプル「サンプルファイル転送WebAP」は、以下のようなJSP、servletファイルで構成されています。
-
-
|
|
図 1.サンプルファイル転送WebAPの構成
|
※このサンプルはファイルI/Oを行うため、動作するServletコンテナの設定によっては実行時にセキュリティ違反が発生する場合があります。その際はpolicyファイルに、セキュリティ違反となったファイルに対して java.io.FilePermission を追加してください。
テスト用サーバでは以下にpolicyファイルが存在します。
設定例.
| %WebOTXディレクトリ%\domains\domain1\config\server.policy |
grant codeBase "file:${com.nec.webotx.instanceRoot}/applications/j2ee-modules/FileTransSample/-" {
permission java.io.FilePermission "${com.nec.webotx.instanceRoot}${/}applications${/}j2ee-modules${/}FileTransSample${/}-", "read,write,delete";
};
|
本サンプルWebアプリケーションを実行する手順について説明します。
- fileupdownload.war ファイルを、Application Name に「FileTransSample」、Context Root に「/FileTransSample」を設定して配備してください。
- http://Webサーバ名(ドメイン省略不可):ポート番号/FileTransSample/index.htmlにアクセスしてください。
- index.htmlの内容が表示されましたら、アップロード処理、ダウンロード処理、削除処理、一覧取得処理のいずれかを選択しクリックしてください。
- 各処理の画面が実行されます。
各処理の処理手順を記述します。
-
-
|
|
図 3-1.アップロードサンプル画面
|
- 転送先ファイルパスを入力してリターンキーを押します。画面中段の「アップロード先のファイルパスを「」として選択ファイルをアップロードします。」に転送先ファイルパスが表示されていることを確認してください。
- 転送元ファイルパスを入力するか、参照ボタンをクリックしファイルを選択してください。
- UpLoadボタンをクリックするとアップロードリクエストがサーブレット(FtransServlet.class)に送信され、ファイルが転送されます。
-
-
|
|
図 3-2.ダウンロードサンプル画面
|
- 転送元ファイルパスを入力してリターンキーを押します。画面中段の「「」をダウンロードできます」にファイルのURLが表示されていることを確認してください。
- ファイルのURLを右クリックし「対象をファイルに保存」を選択してください。
- 転送先(保存)ファイル名を設定しファイルをダウンロードします。
-
-
|
|
図 3-3.削除サンプル画面
|
- 削除するファイルパスを入力してリターンキーを押します。画面中段の「「」を選択ファイルとして削除します」にファイルパスが表示されていることを確認してください。
- Delete Fileボタンをクリックすると削除リクエストがサーブレット(FtransServlet.class)に送信され、ファイルが削除されます。
-
-
|
|
図 3-4.一覧取得サンプル画面
|
- 一覧を取得するディレクトリパスを入力してください。画面下部にファイルの一覧がURL形式で表示されます。
ファイル転送ライブラリはWebコンテナに対してリクエストを送信するタグと受信したリクエストを処理するクラスの2つに分けられます。
ファイル転送タグには、次のタグがあります、詳細はファイル転送タグ リファレンスを参照してください。
-
| タグ名 | タグ機能 |
| SetUpLoadTag | アップロード指定タグ |
| SelectUpLoadTag | アップロードファイル選択タグ |
| SetDownLoadTag | ダウンロードURL作成タグ |
| SetDelFileTag | ファイル削除指定タグ |
| GetFileDirTag | ファイル一覧取得タグ |
ファイル転送クラスには、次のメソッドがあります、詳細はファイル転送クラス リファレンスを参照してください。
-
・FileTransMngクラス
| メソッド名 | メソッド機能 |
| getTransferCtl | 処理種別取得メソッド |
| getUpLoadFile | アップロード処理メソッド |
| getUpLoadData | アップロードデータ取得メソッド |
| deleteFile | ファイル削除メソッド |
ファイル転送ライブラリを利用したJSPファイルを実行するには、次の手順で行います。
- JSPファイルの作成
JSPファイルは、コンテキストルート配下に作成します。
このJSPファイル内にtaglibディレクティブを記述します(ファイル転送タグのtldファイルはコンテキストルートexamplesのWEB-INF配下に配置されています)。taglibディレクティブを記述する場合、次の2つの利用形式があります。
(a)ファイル転送タグのtldファイルを直接指定する形式
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
〜
<body>
<form name="ftran1" <trn:setUpLoad action="FileTrans" uppath="upload.txt"/>>
<trn:selectUpLoad size="50"/><br>
<INPUT type="submit" value="Up Load">
</form>
〜
</body>
|
上記のように、taglibディレクティブのuri属性にファイル転送タグのtldファイルを指定し、prefix属性に任意の文字列(ここでは"trn")を指定すると、
<prexfix属性指定:タグ名〜>というタグ形式でファイル転送タグを利用できます。
(b)「/WEB-INF/web.xml」を利用する形式
<%@ taglib uri="filetransfer" prefix="trn" %>
〜
<body>
<form name="ftran1" <trn:setUpLoad action="FileTrans" uppath="upload.txt"/>>
<trn:selectUpLoad size="50"/><br>
<INPUT type="submit" value="Up Load">
</form>
〜
</body>
|
上記のようにuri属性を指定した場合、「/WEB-INF/web.xml」 に次の記述を追加することで、ファイル転送タグを利用できます。
<taglib>
<taglib-uri>filetransfer</taglib-uri>
<taglib-location>/WEB-INF/Ftrnmngtag.tld</taglib-location>
</taglib>
|
- JSPファイルの実行
以上の作成および配置が完了しましたら、ファイル転送ライブラリを用いたJSPファイルが実行できます。ブラウザから、次のURLにアクセスします。
| http://Webサーバ名(ドメイン省略不可):ポート番号/FileTransSample/SampleUpLoad.jsp |
本ファイル転送ライブラリの利用手順を、ファイル転送ライブラリのサンプルアプリケーション「サンプルファイル転送WebAP」を例に説明します。各タグ機能および属性指定方法の詳細については、ファイル転送タグ リファレンスを参照してください。
※説明に使用するソースは一部簡略化している為、実際のソースと異なる個所があります。
- ファイルアップロードリクエストの設定
JPSファイルのformタグにファイルアップロードタグ(アップロードファイル選択タグ)を使用することでWebコンテナにファイルアップロード要求をリクエストすることができます。
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
<body>
<form name="ftran1" <trn:setUpLoad action="FileTrans" uppath="upload.txt"/>>
<trn:selectUpLoad size="50"/><br>
<INPUT type="submit" value="Up Load">
</form>
</body>
|
上記のJSPソースを「Up Loadボタン」を押して実行すると「サーブレットのFileTransにselectUpLoadタグで選択したファイルを、upload.txtというファイル名で保存して下さい」という内容のアップロードリクエストを送信します。
- ファイルアップロード実行の設定
ファイルアップロードリクエストを受信し、ファイル転送クラス(ファイルアップロード処理)を実行することでファイルをアップロードします。
・サーブレットFileTrans
public void doPost( HttpServletRequest req, HttpServletResponse res)
throws ServletException,IOException {
// ファイル転送クラスの生成
filetransmng = new FileTransMng(getServletContext());
// 処理種別の取得
int action = filetransmng.getTransferCtl( req );
if( action == FileTransMng.ACT_UPLOAD ) {
// ファイルアップロード処理
String putpath = filetransmng.getUpLoadFile( req );
out.println("ファイル["+putpath+"]のアップロードが完了しました。");
}
}
|
リクエストに対する上記処理を実行すると、selectUpLoadタグで選択されたファイルがコンテキストルート(examples/)にupload.txtの名前で保存されます。
- ダウンロードURLの作成
JPSファイルにダウンロードURL作成タグを使用することで、指定したファイルのURLを作成することができます。
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
<body>
<a href="<trn:setDownLoad downpath="subdir/download.txt"/>">
<trn:setDownLoad downpath="subdir/download.txt"/>
</a>
</body>
|
上記のJSPソースを実行するとブラウザ上に指定したファイル(examples/subdir/download.txt)のURLが表示されます。表示されたURLを元にブラウザの「対象をファイルに保存」機能を使用することで、ダウンロードを行います。
- ファイル削除リクエストの設定
JPSファイルのformタグにファイル削除タグを使用することでWebコンテナにファイル削除要求をリクエストすることができます。
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
<body>
<form name="ftran1" <trn:setDelFile action="FileTrans" delpath="delete.txt" type="1"/>>
<INPUT type="submit" value="Delete File">
</form>
</body>
|
上記のJSPソースを「Delete Fileボタン」を押して実行すると「サーブレットのFileTransに選択したファイル(delete.txt)を、削除して下さい」という内容の削除リクエストを送信します。
- ファイル削除実行の設定
ファイル削除リクエストを受信し、ファイル転送クラス(ファイル削除処理)を実行することでファイルを削除します。
・サーブレットFileTrans
public void doPost( HttpServletRequest req, HttpServletResponse res)
throws ServletException,IOException {
// ファイル転送クラスの生成
filetransmng = new FileTransMng(getServletContext());
// 処理種別の取得
int action = filetransmng.getTransferCtl( req );
if( action == FileTransMng.ACT_DELETEFILE ) {
// ファイル削除処理
filetransmng.deleteFile( req );
out.println("ファイルの削除が完了しました");
}
}
|
リクエストに対する上記処理を実行すると、指定ファイル(examples/delte.txt)が削除されます。
- ファイル一覧の取得
JPSファイルにファイル一覧取得タグを使用することで、指定したディレクトリパスの配下にあるファイルの一覧を取得できます。
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
<body>
<SELECT size="5">
<trn:getFileDir dirpath="FileTransSample/">
<OPTION><%=(String)pageContext.getServletContext().getAttribute("FILEDIR")%>
</trn:getFileDir>
</SELECT>
</body>
|
上記のJSPソースを実行するとブラウザ上に指定したディレクトリ(examples/FileTransSample/)配下のファイル一覧がURL形式で表示されます。
|
|
| formタグ中に記述する事でリクエストパラメータにアップロード指示を設定します。アップロードファイル選択タグと組み合わせて使用します。 |
| |
| タグボディ形式 |
JSP形式 |
| 返却スクリプト変数 |
なし |
| 使用可能箇所 |
formタグ中 |
| 指定属性 |
| action |
必須 |
不可 |
| formタグのaction(リクエスト先)を設定します。 |
| dtname |
必須 |
可能 |
| アップロード先のファイルパスをコンテキストルートからの相対パスで設定します。 |
|
| プロパティ |
なし |
| 使用例 |
example : SetUpLoadTag使用例
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
〜
<body>
<form name="ftran1" <trn:setUpLoad action="FileTrans" uppath="upload.txt"/>>
<trn:selectUpLoad size="50"/><br>
<INPUT type="submit" value="Up Load">
</form>
〜
</body>
|
|
|
|
|
| アップロードするファイルの選択を行う処理をHTML中に出力します。 |
| |
| タグボディ形式 |
JSP形式 |
| 返却スクリプト変数 |
なし |
| 使用可能箇所 |
setUpLoadTagの指定されたformタグ中 |
| 指定属性 |
| size |
省略可 |
不可 |
| ファイル名入力欄のサイズを入力します。 |
|
| プロパティ |
なし |
| 使用例 |
example : selectUpLoadTag使用例
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
〜
<body>
<form name="ftran1" <trn:setUpLoad action="FileTrans" uppath="upload.txt"/>>
<trn:selectUpLoad size="50"/><br>
<INPUT type="submit" value="Up Load">
</form>
〜
</body>
|
|
|
|
|
| コンテキストルートからの相対パスを指定することでURLを編集し、HTML中に出力します。 |
| |
| タグボディ形式 |
JSP形式 |
| 返却スクリプト変数 |
なし |
| 使用可能箇所 |
制限なし |
| 指定属性 |
| downpath |
必須 |
可能 |
| ダウンロード対象のファイルパスをコンテキストルートからの相対パスで設定します。 |
|
| プロパティ |
なし |
| 使用例 |
example : setDownLoadTag使用例
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
<body>
<a href="<trn:setDownLoad downpath="subdir/download.txt"/>">
<trn:setDownLoad downpath="subdir/download.txt"/>
</a>
</body>
|
|
|
|
|
| formタグ中に記述する事でリクエストパラメータにファイル削除を設定します。 |
| |
| タグボディ形式 |
JSP形式 |
| 返却スクリプト変数 |
なし |
| 使用可能箇所 |
formタグ中 |
| 指定属性 |
| action |
必須 |
不可 |
| formタグのaction(リクエスト先)を設定します。 |
| delpath |
必須 |
可能 |
| 削除対象のファイルパスをコンテキストルートからの相対パスで設定します。 |
| type |
省略可 |
不可 |
削除対象のファイルパスがディレクトリで 1 を設定した場合、指定ディレクトリ以下が全削除されます。
削除対象のファイルパスがディレクトリで 0 を設定した場合、指定ディレクトリ配下の全ファイルが削除されます。
削除対象のファイルパスがファイルであった場合は無視されます。
|
|
| プロパティ |
なし |
| 使用例 |
example : setDelFileTag使用例
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
<body>
<form name="ftran1" <trn:setDelFile action="FileTrans"
delpath="delete.txt" type="1"/>>
<INPUT type="submit" value="Delete File">
</form>
</body>
|
|
|
|
|
| 指定したディレクトリのファイル(URL形式)の一覧を取得します。取得した一覧は、タグ内でループしつつgetAttribute()で"FILEDIR"の名前で取得します。 |
| |
| タグボディ形式 |
JSP形式 |
| 返却スクリプト変数 |
なし |
| 使用可能箇所 |
制限なし |
| 指定属性 |
| dirpath |
必須 |
可能 |
| 一覧取得対象のディレクトリをコンテキストルートからの相対パスで設定します。 |
|
| プロパティ |
なし |
| 使用例 |
example : GetFileDirTag使用例
<%@ taglib uri="../WEB-INF/Ftrnmngtag.tld" prefix="trn" %>
<body>
<SELECT size="5">
<trn:getFileDir dirpath="FileTransSample/">
<OPTION><%=(String)pageContext.getServletContext().getAttribute("FILEDIR")%>
</trn:getFileDir>
</SELECT>
</body>
|
|
|
|
|
| リクエストより処理種別を抽出します。 |
| |
| パラメータ |
| HTTPリクエスト |
HttpServletRequest |
| サーブレットのリクエストを設定します。 |
|
| 例外 |
FileTransMngException |
| 戻り値 |
処理種別 2:FileTransMng.ACT_UPLOAD(ファイルアップロード) 4:FileTransMng.ACT_DELETEFILE(ファイル削除) |
| 使用可能箇所 |
制限なし |
| 使用例 |
example : getTransferCtl()使用例
filetransmng = new FileTransMng(getServletContext());
int action = filetransmng.getTransfarCtl( req );
if( action == FileTransMng.ACT_UPLOAD ) {
// ファイルアップロード処理
String putpath = filetransmng.getUpLoadFile( req );
} else if( action == FileTransMng.ACT_DELETEFILE ) {
// ファイル削除処理
filetransmng.deleteFile( req );
}
|
|
|
|
|
| アップロードリクエストを処理します。リクエスト中のファイルデータを抽出し、指定ファイルに格納します。 |
| |
| パラメータ |
| HTTPリクエスト |
HttpServletRequest |
| サーブレットのリクエストを設定します。 |
|
| 例外 |
FileTransMngException、IOException |
| 戻り値 |
格納したファイルへのパス |
| 使用可能箇所 |
ファイルアップロードリクエストの場合 |
| 使用例 |
example : getUpLoadFile()使用例
filetransmng = new FileTransMng(getServletContext());
int action = filetransmng.getTransfarCtl( req );
if( action == FileTransMng.ACT_UPLOAD ) {
// ファイルアップロード処理
String putpath = filetransmng.getUpLoadFile( req );
} else if( action == FileTransMng.ACT_DELETEFILE ) {
// ファイル削除処理
filetransmng.deleteFile( req );
}
|
|
|
|
|
| アップロードリクエストを処理します。アップロードされたファイルをリクエストより抽出、ファイル名とバイナリデータを取得します。 |
| |
| パラメータ |
| HTTPリクエスト |
HttpServletRequest |
| サーブレットのリクエストを設定します。 |
|
| 例外 |
FileTransMngException、IOException |
| 戻り値 |
TransDataクラス ※使用例参照 |
| 使用可能箇所 |
ファイルアップロードリクエストの場合 |
| 使用例 |
example : getUpLoadData()使用例
filetransmng = new FileTransMng(getServletContext());
int action = filetransmng.getTransfarCtl( req );
if( action == FileTransMng.ACT_UPLOAD ) {
// ファイルアップロード処理
TransData transdata = filetransmng.getUpLoadData( req );
} else if( action == FileTransMng.ACT_DELETEFILE ) {
// ファイル削除処理
filetransmng.deleteFile( req );
}
TransDataクラスについて
アップロードデータアクセスメソッド
・byte[] getTransData() : アップロードデータ取得
・String getTransName() : アップロードファイル名取得
|
|
|
|
|
| ファイル削除リクエストで指定されたファイル(ディレクトリ)を削除します。 |
| |
| パラメータ |
| HTTPリクエスト |
HttpServletRequest |
| サーブレットのリクエストを設定します。 |
|
| 例外 |
FileTransMngException、IOException |
| 戻り値 |
なし |
| 使用可能箇所 |
ファイル削除リクエストの場合 |
| 使用例 |
example : deleteFile()使用例
filetransmng = new FileTransMng(getServletContext());
int action = filetransmng.getTransfarCtl( req );
if( action == FileTransMng.ACT_UPLOAD ) {
// ファイルアップロード処理
String putpath = filetransmng.getUpLoadFile( req );
} else if( action == FileTransMng.ACT_DELETEFILE ) {
// ファイル削除処理
filetransmng.deleteFile( req );
}
|
|
|
Copyright (C) 1998 - 2008 NEC Corporation.All rights reserved.