jp.terasoluna.fw.web.struts.actions
クラス FileDownloadUtil

java.lang.Object
  上位を拡張 jp.terasoluna.fw.web.struts.actions.FileDownloadUtil

public class FileDownloadUtil
extends Object

ファイルダウンロードを行うユーティリティクラス。

ダウンロードファイル名のエンコーディング変更
ダウンロード時の指定ファイル名(ブラウザで保存する際に表示されるファイル名)の エンコーディングはデフォルトではInternet Explorerのみに対応している。 エンコーディングを変更するためには、DownloadFileNameEncoder実装クラスを 作成して、Bean定義ファイルで設定を行う必要がある。
DownloadFileNameEncoder実装例
この例ではUser-Agentでブラウザを判別し、 FireFoxの場合はcommons-codecのクラスを利用してエンコーディングを行っている。

 public class MyEncoder implements DownloadFileNameEncoder {

     public String encode(String original, HttpServletRequest request,
             HttpServletResponse response) {
         String userAgent = request.getHeader("User-Agent");
         if (StringUtils.contains(userAgent, "MSIE")) {
             return encodeForIE(original);
         } else if (StringUtils.contains(userAgent, "Gecko")) {
             return encodeForGecko(original);
         }
         return encodeForIE(original);
     }

     protected String encodeForGecko(String original) {
         try {
             return new BCodec().encode(original);
         } catch (EncoderException e) {
             return original;
         }
     }

     protected String encodeForIE(String original) {
         try {
             return URLEncoder.encode(original,
                     AbstractDownloadObject.DEFAULT_CHARSET);
         } catch (UnsupportedEncodingException e) {
             return original;
         }
     }
 }
 
Bean定義ファイル設定例

 <bean class="jp.terasoluna.fw.web.struts.actions.FileDownloadUtil">
   <property name="encoder" ref="encoder"/>
 </bean>
 <bean name="encoder" class="sample.MyEncoder"/>
 


フィールドの概要
protected static DownloadFileNameEncoder encoder
          指定ファイル名のエンコーダ。
static String HEADER_CONTENT_DISPOSITION
          レスポンスのCONTENT-DISPOSITIONヘッダ名。
static String TOO_MANY_DOWNLOAD_ERROR
          ダウンロード対象のインスタンスが1つ以上ある場合のエラーコード。
 
コンストラクタの概要
FileDownloadUtil()
           
 
メソッドの概要
static void download(AbstractDownloadObject downloadObject, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, boolean forceDownload)
          ブラウザにダウンロードをさせる。
static void download(Object result, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          ブラウザにダウンロードをさせる。
 void setEncoder(DownloadFileNameEncoder encoder)
          指定ファイル名のエンコーダを設定する。
protected static void setFileName(javax.servlet.http.HttpServletResponse response, String name, boolean forceDownload)
          ファイル名を設定する
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

HEADER_CONTENT_DISPOSITION

public static final String HEADER_CONTENT_DISPOSITION
レスポンスのCONTENT-DISPOSITIONヘッダ名。

関連項目:
定数フィールド値

TOO_MANY_DOWNLOAD_ERROR

public static final String TOO_MANY_DOWNLOAD_ERROR
ダウンロード対象のインスタンスが1つ以上ある場合のエラーコード。

関連項目:
定数フィールド値

encoder

protected static DownloadFileNameEncoder encoder
指定ファイル名のエンコーダ。

コンストラクタの詳細

FileDownloadUtil

public FileDownloadUtil()
メソッドの詳細

setEncoder

public void setEncoder(DownloadFileNameEncoder encoder)
指定ファイル名のエンコーダを設定する。

パラメータ:
encoder - 指定ファイル名のエンコーダ。

download

public static void download(Object result,
                            javax.servlet.http.HttpServletRequest request,
                            javax.servlet.http.HttpServletResponse response)
ブラウザにダウンロードをさせる。

パラメータ:
result - ダウンロードデータを保持するインスタンス。
request - リクエスト。
response - レスポンス。

download

public static void download(AbstractDownloadObject downloadObject,
                            javax.servlet.http.HttpServletRequest request,
                            javax.servlet.http.HttpServletResponse response,
                            boolean forceDownload)
                     throws IOException
ブラウザにダウンロードをさせる。

パラメータ:
downloadObject - ダウンロード対象。
request - リクエスト。
response - レスポンス。
例外:
IOException - ダウンロード時に入出力例外が発生した場合。

setFileName

protected static void setFileName(javax.servlet.http.HttpServletResponse response,
                                  String name,
                                  boolean forceDownload)
ファイル名を設定する

パラメータ:
response - レスポンス。
name - ダウンロード名。
forceDownload - 強制ダウンロードかどうか。trueの場合、強制。


Copyright © 2012. All Rights Reserved.