方式一:.通过action;return 到一个空的页面,因为response在action里面已经设定好了。
public void openExcel() throws AppException {
String targetfile = ServletActionContext.getServletContext()
.getRealPath(path);//服务器端文件
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx
.get(ServletActionContext.HTTP_RESPONSE);//取response从ActionContext
response.setContentType("application/vnd.ms-excel");//设置reponse的contentType,关于contextType有另一篇文件讲解
response.setHeader("Content-disposition", "inline; filename="
+ targetfile);//设置response的头:inline表示在浏览器中打开,attechement表示附件形式
ServletOutputStream ut = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
out = response.getOutputStream();
FileInputStream fin = new FileInputStream(targetfile);
bis = new BufferedInputStream(fin);
bos = new BufferedOutputStream(out);
byte buff[] = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length)))
bos.write(buff, 0, bytesRead);//将文件写入输出流
if (bis != null)
bis.close();
if (bos != null)
bos.close();//关闭流
} catch (MalformedURLException e) {
logger.error("MalformedURLException.", e);
} catch (IOException e) {
logger.error("IOException.", e);
}
}
处理思路:生成的服务器端的文件读入输入流,放在输入流缓冲区,然后从缓冲区写入输出流。这种方式由于直接从缓冲区中读,所以可以用完后可以直接删除服务器端文件。
只要加入这段代码就可以了;
File file=new File(targetfile);
关闭流的时候删除
file.delete;
这样就可以了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20941140/viewspace-557965/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20941140/viewspace-557965/