|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjp.terasoluna.fw.web.struts.actions.FileDownloadUtil
public class FileDownloadUtil
ファイルダウンロードを行うユーティリティクラス。
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 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 |
| フィールドの詳細 |
|---|
private static final org.apache.commons.logging.Log log
public static final java.lang.String HEADER_CONTENT_DISPOSITION
CONTENT-DISPOSITIONヘッダ名。
public static final java.lang.String TOO_MANY_DOWNLOAD_ERROR
protected static DownloadFileNameEncoder encoder
| コンストラクタの詳細 |
|---|
public FileDownloadUtil()
| メソッドの詳細 |
|---|
public void setEncoder(DownloadFileNameEncoder encoder)
encoder - 指定ファイル名のエンコーダ。
public static void download(java.lang.Object result,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
result - ダウンロードデータを保持するインスタンス。request - リクエスト。response - レスポンス。
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 - ダウンロード時に入出力例外が発生した場合。
protected static void setFileName(javax.servlet.http.HttpServletResponse response,
java.lang.String name,
boolean forceDownload)
response - レスポンス。name - ダウンロード名。forceDownload - 強制ダウンロードかどうか。trueの場合、強制。
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||