パッケージ org.opengion.hayabusa.servlet

# クラス FileDownload

java.lang.Object
jakarta.servlet.GenericServlet
jakarta.servlet.http.HttpServlet
org.opengion.hayabusa.servlet.FileDownload

すべての実装されたインタフェース:
  `Servlet`, `ServletConfig`, `Serializable`

@WebServlet("/jsp/fileDownload") public class FileDownload extends HttpServlet
ｻｰﾊﾞｰ管理ﾌｧｲﾙをﾀﾞｳﾝﾛｰﾄﾞする場合に使用する､ｻｰﾌﾞﾚｯﾄです｡ 引数(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属性の値から計算されるﾊｯｼｭｺｰﾄﾞﾁｪｯｸｻﾑと､"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ﾌｧｲﾙの配置は必要です｡ ｻｰﾌﾞﾚｯﾄに対して引数でstorage,bucketを与える事も可能です｡ 5.8.1.0 (2014/11/07) forwardでｱｸｾｽする場合はﾌｧｲﾙ名の文字ｺｰﾄﾞ変換が不要なため､useStringConvert=falseの 引数を与えてください｡（falseとしない場合は日本語ﾌｧｲﾙ名等でｴﾗｰが発生します） 5.10.9.0 (2019/03/01) ｸﾗｳﾄﾞとﾊﾞｹｯﾄ名を指定するﾘｸｴｽﾄﾊﾟﾗﾒｰﾀを追加｡ 8.0.1.0 (2021/10/29) storageType → storage ､bucketName → bucket に変更 storage (初期値：ｼｽﾃﾑﾘｿｰｽのCLOUD_TARGET) bucket (初期値：ｼｽﾃﾑﾘｿｰｽのCLOUD_BUCKET) useLocal (初期値：false) 初期値は､ｼｽﾃﾑﾘｿｰｽ上のﾊﾟﾗﾒｰﾀで初期値を指定できます｡ 強制的にﾛｰｶﾙﾌｧｲﾙにｱｸｾｽする場合は､"LOCAL" を指定するか、useLocal="true"を指定してください｡ 7.2.7.0 (2020/08/07) 相対ﾊﾟｽの場合の基準ﾌｫﾙﾀﾞ 互換性確保のため､useBase ﾘｸｴｽﾄ変数を true で飛ばすと､処理を実行します｡ 8.0.0.1 (2021/10/08) useStringConvert (ｴﾝｺｰﾄﾞ変換対応のON/OFF指定)を廃止｡ 漢字ﾌｧｲﾙのｴﾝｺｰﾄﾞを指定すると､文字化けするので､何も行わない｡ RequestEncoding ﾊﾟﾗﾒｰﾀも､使用しません｡

関連項目:
  - 直列化された形式
変更履歴:
  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,

- ## フィールドの概要

  ### クラスから継承されたフィールド jakarta.servlet.http.HttpServlet

  `LEGACY_DO_HEAD`

- ## コンストラクタの概要

  コンストラクタ
  コンストラクタ
  説明
  `FileDownload()`
  ﾃﾞﾌｫﾙﾄｺﾝｽﾄﾗｸﾀｰ

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `void`
  `doGet(HttpServletRequest request, HttpServletResponse response)`
  GET ﾒｿｯﾄﾞが呼ばれたときに実行します｡ 処理は､doPost へ振りなおしています｡
  `void`
  `doPost(HttpServletRequest request, HttpServletResponse response)`
  POST ﾒｿｯﾄﾞが呼ばれたときに実行します｡ file 引数の ｻｰﾊﾞｰ物理ﾌｧｲﾙを､ｸﾗｲｱﾝﾄにｽﾄﾘｰﾑ化して返します｡ name 引数があれば､その名前のﾌｧｲﾙ名でｸﾗｲｱﾝﾄがﾌｧｲﾙｾｰﾌﾞできるように します｡name 引数がなければ､そのまま物理ﾌｧｲﾙ名が使用されます｡ ｻｰﾊﾞｰ物理ﾌｧｲﾙ名が､相対ﾊﾟｽの場合､ｺﾝﾃｷｽﾄﾙｰﾄに対する相対ﾊﾟｽになります｡ (例：G:\webapps\dbdef2\ など)

  ### クラスから継承されたメソッド jakarta.servlet.http.HttpServlet

  `doDelete, doHead, doOptions, doPut, doTrace, getLastModified, init, service, service`

  ### クラスから継承されたメソッド jakarta.servlet.GenericServlet

  `destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log`

  ### クラスから継承されたメソッド java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## コンストラクタの詳細

  - ### 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) 考慮, 8.0.0.1 (2021/10/08) USE_STR_CONV_KEY 廃止, 8.1.2.0 (2022/03/10) getMD5 ﾒｿｯﾄﾞを getHash ﾒｿｯﾄﾞに変更, 8.4.0.0 (2022/12/23) ﾌｧｲﾙ名が漢字の場合、RFC6266方式を併記すると、ｴﾗｰになる(Tomcat10.1～)