基本的には、「Apache Struts ハンドブック SECTION08.05」そのままだが、Excelファイルをダウンロードするように変更。
public class DownloadAction extends Action{
public final ActionForward execute(
final ActionMapping map, final ActionForm form,
final HttpServletRequest req, final HttpServletResponse res)
throws Exception {
// HTTP RESPONSE をリセット ("text;html"を返すように設定されている )
res.reset();
// HTTP RESPONSE のヘッダを設定
res.setContentType("application/vnd.ms-excel");
res.setHeader("Content-Disposition", "attachment;filename=data.xls");
// ファイルの内容を書き込む
OutputStream os = res.getOutputStream();
InputStream is = new FileInputStream("/export/home/appwork/data.xls");
byte[] buf = new byte[bufSize];
int len;
while ((len = input.read(buf)) != -1) {
output.write(buf, 0, len);
}
is.close();
os.flush(); // flush() を忘れずに、close()してはいけない
return null;
}
}
HTTP RESPONSE の HEADER を変更する
方式 | HEADER |
ダウンロード | Content-Disposition=attachment;filename=data.xls |
アプリ起動1 | Content-Disposition=inline; filename=data.xls |
アプリ起動2 | Content-Disposition=file; filename=data.xls |