首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

jsf 附件上载代码

2012-12-20 
jsf 附件下载代码前台页面大概如下:??h:commandLink value下载 action#{KnowledgeItemAction.downlo

jsf 附件下载代码

前台页面大概如下:

?

?<h:commandLink value="下载" action="#{KnowledgeItemAction.download}">
?????????<f:param name="fileName" value="#{file.saveName}"/>
??????????<f:param name="testPath" value="${facesContext.externalContext.requestContextPath}"/>
??</h:commandLink>

?

后台代码如下:

?

public void download() {
?????? String str = FacesContext.getCurrentInstance().getExternalContext()
??????? .getRequestParameterMap().get( "fileName" );?

???????
?????? if(null != str ){
??????? String filePath = Util.PATH? + str;????//?得到文件路径
??????? try {
??????????? FacesContext ctx = FacesContext.getCurrentInstance();
??????????? ctx.responseComplete();??//此步必须有否则会出现:Servlet?response?already?use?stream?异常HttpServletResponse response=(HttpServletResponse)ctx.getExternalContext().getResponse();
??????????? File f = new File(filePath);
??????????? if (!f.exists()) {
??????????????? response.sendError(404, "File not found!");
??????????????? return;
??????????? }
??????????? BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
??????????? byte[] buf = new byte[1024];
??????????? int len = 0;

??????????? response.reset(); // 非常重要
??????????? response.setContentType("application/x-msdownload;charset=gbk");
??????????? response.setHeader("Content-Disposition", "attachment; filename="
??????????? + f.getName());
???????????
??????????? OutputStream out = response.getOutputStream();
??????????? while ((len = br.read(buf)) > 0)
??????????? out.write(buf, 0, len);
??????????? br.close();
??????????? out.close();
??????? } catch (IOException e) {
??????????? e.printStackTrace();
??????? }
?????? }
??? }

?

?

?

热点排行