クラス FileDownload
java.lang.Object
jakarta.servlet.GenericServlet
jakarta.servlet.http.HttpServlet
org.opengion.hayabusa.servlet.FileDownload
- すべての実装されたインタフェース:
Servlet
,ServletConfig
,Serializable
サーバー管理ファイルをダウンロードする場合に使用する、サーブレットです。
引数(URL)に指定のファイルをサーバーからクライアントにダウンロードさせます。
file には、サーバーファイルの物理アドレスを指定します。相対パスを使用する場合は、
コンテキストルート(通常、Tomcatでは、G:\webapps\dbdef2\ など)からのパスと判断します。
name には、クライアントに送信するファイル名を指定します。ファイル名を指定しない場合は、
サーバーの物理ファイルのファイル名が代わりに使用されます。
日本語ファイル名は、すべて UTF-8化して処理します。指定するファイルに日本語が含まれる
場合は、URLエンコードを行ってください。変換前エンコードはリクエスト変数requestEncodingで指定可能で、標準はISO-8859-1です。
基本的にはContent-disposition属性として"attachment"が指定されます。
但し、引数に inline=true を指定することで、Content-disposition属性に"inline"が指定されます。
また、システムリソースのUSE_FILEDOWNLOAD_CHECKKEYをtrueに指定することで、簡易的なチェックを
行うことができます。
具体的には、これを有効にすると、file属性の値から計算されるMD5チェックサムと、"key"という
パラメーターに指定された値が一致した場合のみダウンロードが許可され、keyが指定されていない、
または値が異なる場合はダウンロードエラーとなります。
一般的なサーブレットと同様に、デプロイメント・ディスクリプタ WEB-INF/web.xml に、
servlet 要素と そのマッピング(servlet-mapping)を定義する必要があります。
<servlet>
<servlet-name>fileDownload</servlet-name>
<servlet-class>org.opengion.hayabusa.servlet.FileDownload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fileDownload</servlet-name>
<url-pattern>/jsp/fileDownload</url-pattern>
</servlet-mapping>
一般には、http://:ポート/システムID/jsp/fileDownload?file=サーバー物理ファイル&name=ファイル名
形式のURL でアクセスします。
5.9.25.0 (2017/10/06)
クラウド上のPaaSでオブジェクトストレージを利用する際は以下のシステムリソースを設定してください。
CLOUD_TARGET,CLOUD_BUCKET
plugin/cloud内のクラスを利用してファイルアップロード(FileUploadタグ)、ダウンロード(FileDownloadサーブレット)をAPI経由で行います。
プラグインが利用するjarファイルの配置は必要です。
サーブレットに対して引数でstorageType,bucketNameを与える事も可能です。
5.8.1.0 (2014/11/07)
forwardでアクセスする場合はファイル名の文字コード変換が不要なため、useStringConvert=falseの
引数を与えてください。(falseとしない場合は日本語ファイル名等でエラーが発生します)
7.2.7.0 (2020/08/07) 相対パスの場合の基準フォルダ
互換性確保のため、useBase リクエスト変数を true で飛ばすと、処理を実行します。
- 関連項目:
- 変更履歴:
- 3.8.1.1 (2005/11/21) 新規追加, 5.9.25.0 (2017/10/06) クラウド対応, 5.9.29.1 (2018/02/07) Azure対応追加, 5.10.9.0 (2019/03/01) oota クラウドストレージ対応を追加。(Fileクラスを拡張)
- 機能分類
- その他機能
- 導入されたバージョン:
- JDK1.1,
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明void
doGet
(HttpServletRequest request, HttpServletResponse response) GET メソッドが呼ばれたときに実行します。void
doPost
(HttpServletRequest request, HttpServletResponse response) POST メソッドが呼ばれたときに実行します。クラスから継承されたメソッド jakarta.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
クラスから継承されたメソッド jakarta.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log
-
コンストラクタの詳細
-
FileDownload
public FileDownload()デフォルトコンストラクター- 変更履歴:
- 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
-
-
メソッドの詳細
-
doGet
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException GET メソッドが呼ばれたときに実行します。 処理は、doPost へ振りなおしています。- オーバーライド:
doGet
クラス内HttpServlet
- パラメータ:
request
- HttpServletRequestオブジェクトresponse
- HttpServletResponseオブジェクト- 例外:
ServletException
- サーブレット関係のエラーが発生した場合、throw されます。IOException
- 入出力エラーが発生したとき- 変更履歴:
- 3.8.1.2 (2005/12/19) 半角カナ-全角カナ変換機能の追加
-
doPost
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException POST メソッドが呼ばれたときに実行します。 file 引数の サーバー物理ファイルを、クライアントにストリーム化して返します。 name 引数があれば、その名前のファイル名でクライアントがファイルセーブできるように します。name 引数がなければ、そのまま物理ファイル名が使用されます。 サーバー物理ファイル名が、相対パスの場合、コンテキストルートに対する相対パスになります。 (例:G:\webapps\dbdef2\ など)- オーバーライド:
doPost
クラス内HttpServlet
- パラメータ:
request
- HttpServletRequestオブジェクトresponse
- HttpServletResponseオブジェクト- 例外:
ServletException
- サーブレット関係のエラーが発生した場合、throw されます。IOException
- 入出力エラーが発生したとき- 変更履歴:
- 5.3.2.0 (2011/02/01) 日本語ファイル名が正しく処理できないバグを修正, 5.3.4.0 (2011/04/01) IEでファイルが正しくダウンロードできないバグを修正, 5.3.5.0 (2011/05/01) ファイルダウンロードチェックキー対応, 5.3.6.0 (2011/06/01) ファイルダウンロードはattachmentに変更(ダウンロードダイアログを出す), 5.3.8.0 (2011/08/01) ファイル名指定でIEの場合、URLエンコードすると途中で切れるため(IE7のバグ)、Shift_JIS(WIndows-31J)で直接指定する。, 5.3.9.0 (2011/09/01) 引数にinline=trueを指定することで、インライン表示が出来るように対応, 5.7.1.2 (2013/12/20) 日本語ファイルのIE11対応(UA変更),msg ⇒ errMsg 変更, 5.8.1.0 (2014/11/07) forward時の文字コード変換不要対応, 5.9.25.0 (2017/10/06) クラウドストレージからダウンロード処理を追加対応, 5.9.27.0 (2017/12/01) Content-Lengthをhttpヘッダに追加しておく, 5.9.27.2 (2017/12/15) Edgeの日本語ファイル名対応, 6.8.4.2 (2017/12/25) エンコード変換対応のキー(fileDownloadサーブレットでエンコードをON/OFF指定に利用), 5.9.28.1 (2018/01/19) safariの日本語ファイル名対応(RFC6266方式を併記), 6.9.4.1 (2018/04/09) 日本語ファイル名で、旧方式を入れておくと、文字化けするので、はずします。, 5.10.12.4 (2019/06/21) エンコーディングを外部から指定可能にする, 7.2.7.0 (2020/08/07) 相対パスの場合の基準フォルダ(FILE_URL) 考慮
-