日期:2014-05-16  浏览次数:20317 次

JSP实现点击链接后下载文件(相当于右键另存)功能

[code="java"]
/**?*//** ?


?????*?实现文件另存功能 ?


?????*? ?


?????*?@param?text ?


?????*????????????文件内容 ?


?????*?@param?fileName ?


?????*????????????文件名称 ?


?????*?@return ?


?????*/??


????protected?String?renderFile(String?text,?String?fileName) ??



????????????throws?IOException ??



????{ ??


????????response.addHeader("Content-Disposition",?"attachment;?filename="??



????????????????+?fileName); ??


????????response.setContentType("application/octet-stream"); ??



????????response.setCharacterEncoding("GB2312"); ??



????????response.getWriter().write(text); ??


????????response.flushBuffer(); ??


????????response.getWriter().close(); ??


????????return?null; ??



????}??

?
下载的action:

/**?*//** ?


?????*?提供下载的方法 ?


?????*?@return ?


?????*/??


????public?String?down() ??



????{ ??


????????String?dir?=?getFullPath()?+?"/upload/file/"; ??



????????try??



????????{ ??


????????????if?(!FileUtils.exists(dir)) ??



????????????{ ??


????????????????new?File(dir).mkdirs(); ??



????????????} ??


????????????Random?r?=?new?Random(System.currentTimeMillis()); ??



????????????Integer?randomInt?=?r.nextInt(); ??


????????????this.renderFile("test?content:"?+?randomInt,randomInt?+?".txt"); ??



????????} ??


????????catch?(IOException?e) ??



????????{ ??


????????????e.printStackTrace(); ??


????????????this.renderText(e.getMessage()); ??



????????} ??


????????return?null; ??



????}??

?
页面链接调用:
"${ctx}/va/va!down.do"?>下载??

?