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

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

public class FileDownloadUtil
extends java.lang.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 java.lang.String HEADER_CONTENT_DISPOSITION
          レスポンスのCONTENT-DISPOSITIONヘッダ名。
private static org.apache.commons.logging.Log log
          ログクラス。
static java.lang.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(java.lang.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, java.lang.String name, boolean forceDownload)
          ファイル名を設定する
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

log

private static final org.apache.commons.logging.Log log
ログクラス。


HEADER_CONTENT_DISPOSITION

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

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

TOO_MANY_DOWNLOAD_ERROR

public static final java.lang.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(java.lang.Object result,
                            javax.servlet.http.HttpServletRequest request,
                            javax.servlet.http.HttpServletResponse response)
ブラウザにダウンロードをさせる。

パラメータ:
result - ダウンロードデータを保持するインスタンス。
request - リクエスト。
response - レスポンス。
例外:
java.io.IOException - 入出力例外が生じた場合。

download

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

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

setFileName

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

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