JSF 下载文件 怎么实现

JSF 下载文件 怎么实现

 
 java code ::

----------------------------------

package demo;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.logging.Logger;

import javax.faces.application.Application;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.operamasks.faces.annotation.ManagedBean;
import org.operamasks.faces.annotation.ManagedBeanScope;
@ManagedBean(name
="downFile", scope=ManagedBeanScope.SESSION)
public class DownFile {
public String download() {
//OaMailAttach oaMailAttach = getOaMailAttach();

String path
="G:\\sun\\";
String fileName
="20074111452140.doc";

try {
FacesContext ctx
= FacesContext.getCurrentInstance();
ctx.responseComplete();
//String contentType = "application/octet-stream;charset=utf-8";
String contentType = "application/x-download";
HttpServletResponse response
= (HttpServletResponse) ctx.getExternalContext().getResponse();



response.setContentType(contentType);

StringBuffer contentDisposition
= new StringBuffer();

contentDisposition.append(
"attachment;");

contentDisposition.append(
"filename=\"");
contentDisposition.append(fileName);
contentDisposition.append(
"\"");
//log.debug(System.getProperty("file.encoding"));
response.setHeader("Content-Disposition", new String(contentDisposition.toString().getBytes(System.getProperty("file.encoding")),"iso8859_1"));
// log.debug(contentDisposition.toString());
ServletOutputStream out = response.getOutputStream();

//log.debug(new Long(oaMailAttach.getAtFile().length()));

byte[] bytes = new byte[0xffff];
InputStream is
= new FileInputStream(new File(path + fileName));
int b = 0;
while ((b = is.read(bytes, 0, 0xffff)) > 0) {
out.write(bytes,
0, b);
}
is.close();
out.flush();
ctx.responseComplete();
}
catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return null;
}


-------------------------------------------------------------------------

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<%@ taglib prefix="l" uri="http://www.apusic.com/jsf/layout" %>
<%@ taglib prefix="ajax" uri="http://www.apusic.com/jsf/ajax" %>
<%@ taglib prefix="w" uri="http://www.apusic.com/jsf/widget" %>
<f:view >
<w:page title="Stock Quote" skin="aqua">
<h:head>
<style type="text/css">
#grid
-example {
height:280px;
border:1px solid #cbc7b8;
}
#stock
-detail {
width:400px;
}
</style>
<w:stylesheet src="/common/resources/examples.css"/>
</h:head>
<h:form>
<h:commandLink id="file1" value="下载文件" action="#{downFile.download}" type="button">
</h:commandLink>
</h:form>

</w:page>
</f:view>


}

你可能感兴趣的:(JSF 下载文件 怎么实现)