import org.apache.struts.upload.FormFile;
action 方法
public String saveFile(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception{
FileManagerActionForm fileForm= (FileManagerActionForm)form;
FormFile file = fileForm.getFiles();
int len = file.getFileSize();
if(file.getFileSize()>10480000)//文件附件大小不超10兆
{
throw new AppException().setMessageKey("errors.superFileSize");
}
getServiceFacade().getFileManager().doAddFile(fileForm.getCateId(), file.getFileName(), file.getFileSize(), file.getFileData());
request.setAttribute("flag","add");
return "cateAddFile";
}
action 里调用的 service 方法:
public void doAddFile(Long typeId, String fileName, int size, byte[] data) {
TCmsFilecate cate = (TCmsFilecate) fileManagerDao.findById(
TCmsFilecate.class, typeId);
TCmsFile file = new TCmsFile();
file.setTCmsFilecate(cate);
file.setDate(new Date());
file.setName(fileName);
file.setSize(new Integer(size));
file.setContext(data);
fileManagerDao.save(file);
}
文件另存:
public String getFileDetail(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
{
try{
FileManagerActionForm fileForm= (FileManagerActionForm)form;
Long fielId=new Long(request.getParameter("fileId"));
TCmsFile file = new TCmsFile();
file= getServiceFacade().getFileManager().findById(fielId);
request.setAttribute("context",file.getContext());
request.setAttribute("name",file.getName());
}
catch(Exception e)
{
throw new AppException().setMessageKey("errors.nothing").setMessageArgs(new String[]{"该文件已被删除!"});
}
return "loadLoading";
}
页面
<body>
<%
response.reset();
byte[] context = (byte[])request.getAttribute("context");
String fileName = (String)request.getAttribute("name");
response.setContentType("application/x-download;charset=GBK");
response.setHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes("GBK"), "iso-8859-1"));
OutputStream os = response.getOutputStream();
os.write(context);
os.flush();
os.close();
os = null;
out.clear();
out = pageContext.pushBody();
%>
</body>