2008年7月7日 星期一

Struts Download File Example

public ActionForward doViewAttachFile(ActionMapping aMapping, ActionForm aForm,
HttpServletRequest aRequest, HttpServletResponse aResponse) throws Exception {
Efp136Form efp136Form = (Efp136Form) aForm;
Efp136m efp136m = (Efp136m) efp136Form.getEntity();

String fileName = URLEncoder.encode(efp136m.getAttachFileName(), "UTF-8");
aResponse.setHeader("Content-disposition", "attachment; filename=" + fileName);
aResponse.setContentType(efp136m.getAttachFileType());
aResponse.setContentLength(efp136m.getAttachFileSize().intValue());

ServletOutputStream servletOutputStream = aResponse.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(servletOutputStream);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(efp136m.getAttachFileData());
BufferedInputStream bufferedInputStream = new BufferedInputStream(byteArrayInputStream);
byte[] bytes = new byte[2048];
while (bufferedInputStream.read(bytes) != -1) {
bufferedOutputStream.write(bytes);
}

servletOutputStream.flush();
byteArrayInputStream.close();
servletOutputStream.close();
return aMapping.findForward(VIEW_ATTACH_FILE_SUCCESS);
}