Developer'sWorks
Tips

ダウンロード時のデフォルトファイル名を指定する方法

WebtribeでのHTMLGateway(HAMC)にて、ResponseFileのルールを使用しファイルをユーザに返す時
保存時の名前は『HTMLGateway[0]』や適当な名称がデフォルトとなってしまいます。
この現象に関しては

  Content-Disposition: attachment; filename="aaa.txt"

とHTTPヘッダを設定することで、保存時の名前を『aaa.txt』に変更することが可能です。

HTTPヘッダの設定をするにはAbstractHtmlGatewayRuleを継承した
独自のビジネスルールを作成する必要があります。
public SetFileName extends AbstractHtmlGatewayRule{
	public int getIOParameter(){
		return OK;
	}

	public int execute(){
		HttpServletResponse res = getResponse();
		res.setHeader(
			"Content-Disposition", "attachment; filename=\"aaa.txt\""
		);
	}
	
	public void exit(){
	}
}

作成したビジネスルールをResponseFileの実行前に設定することで、ブラウザ側のデフォルトファイル名を 設定できます。

※ このHTTPヘッダを解釈できるブラウザを使用する必要があります。
※ 2バイト文字や特殊文字・半角カナを含むファイル名はResponseHeaderには設定できません。
※ InternetExplorerの場合、『aaa.bbb.txt』のようにピリオドが二つあるファイル名正しく保存できないことが確認されてます。

-- 2004/03/01 Update