不说别的了,上代码
首先流获得
public static ByteArrayOutputStream downloadFile(String fileName) {
FileInputStream fis = null;
BufferedInputStream bis = null;
ByteArrayOutputStream baos = null;
BufferedOutputStream bos = null;
try {
fis = new java.io.FileInputStream(fileName);
bis = new BufferedInputStream(fis);
baos = new ByteArrayOutputStream();
bos = new BufferedOutputStream(baos);
} catch (FileNotFoundException ex) {
java.util.logging.Logger.getLogger(DownloadUtil.class.getName()).log(Level.SEVERE, null, ex);
}
try {
//解决中文文件名的问题
// fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
byte[] b = new byte[1024];
int i = 0;
while ((i = bis.read(b)) > 0) {
bos.write(b, 0, i);
}
bos.flush(); //提交文件流,很关键
bis.close();
} catch (Exception ex) {
java.util.logging.Logger.getLogger(DownloadUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
fis.close();
} catch (IOException ex) {
java.util.logging.Logger.getLogger(DownloadUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return baos;
}
}
有了文件流之后,以此和欲保存的文件名作为参数传到这个函数:
public static void downloadAction(String fileName,ByteArrayOutputStream baos) {
try {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls"); //不是内嵌显示(inline),而是作为附件下载
response.setContentLength(baos.size());
response.setContentType("application/vnd.ms-excel");
ServletOutputStream sos = response.getOutputStream();
baos.writeTo(sos);
sos.flush();
baos.close();
} catch (IOException ex) {
logger.debug(ex);
}
}
分享到:
相关推荐
总之,JSF文件下载功能的实现涉及到JSF上下文、Servlet上下文、HTTP响应头设置、文件流处理等多个关键环节。理解并熟练掌握这些知识点对于开发Web应用程序,特别是处理文件操作的场景非常重要。
以上就是JSF文件上传和下载的基本实现。为了确保安全性和性能,还需要考虑错误处理、文件大小限制、临时文件管理以及用户权限控制等细节。同时,现代的Web开发中,还可能结合使用CDN(内容分发网络)和云存储服务来...
jsf 文档 jsf 文档 jsf 文档 jsf 文档
jsf jar文件 下载 jsf开发 jsf(jar文件下载) jsf-api.jar
在JavaServer Faces (JSF)框架中,文件上传和下载是常见的功能,广泛应用于Web应用程序中,例如用户需要上传个人照片、下载文档等。本文将详细介绍如何在JSF环境中实现文件上传和下载,并提供一个可直接在Eclipse下...
但是,根据上下文,我们可以推断文档可能包含有关JSF的详细教程或参考资料,比如如何配置JSF环境、创建JSF组件、处理用户事件以及调试JSF应用程序等内容。 总的来说,JSF是一个强大的工具,它为Java开发者提供了...
JSF(JavaServer Faces)是Java...对于希望学习或改进自己JSF文件上传功能的开发者来说,这是一个宝贵的资源。通过深入研究源代码,可以了解到如何处理大文件、如何优化上传性能以及如何确保上传过程的稳定性和安全性。
**导航** 在JSF中是通过配置文件(faces-config.xml)或编程方式实现的,决定了根据用户的操作如何重定向到不同的页面。 **JSF API** 还提供了许多其他功能,如国际化支持、错误处理和事件传播等。这个帮助文档会...
1. 开发自定义组件:这是解决JSF文件上传问题的一种方法,通过编写自定义组件,可以扩展JSF的功能以支持文件上传。这通常涉及到解析multipart/form-data请求,处理文件流,并将其与后台的管理Bean进行交互。 2. ...
2. **JSF生命周期**:JSF应用遵循一系列阶段,从初始化到渲染响应。理解每个阶段的作用对于有效调试和优化代码至关重要。 3. **EL(Expression Language)**:JSF与EL紧密集成,EL用于在视图层表达式中访问和操作...
2. **jsf-impl.jar**:此JAR文件包含了JSF实现,即对JSF API的具体实现。它提供了JSF规范的底层逻辑,包括生命周期管理、渲染器、默认组件实现等。这个实现库使得开发者无需关注底层细节,可以直接使用JSF提供的服务...
JSF的中文帮助文档是一个非常宝贵的资源,对于学习和理解这个框架的开发者来说,无论是初学者还是经验丰富的专业人士,都是不可或缺的参考资料。 文档通常分为PDF和CHM两种格式,每种都有其独特的优点。**PDF...
2. JSF组件库: JSF的核心在于其组件模型。JSF提供了一套内置的UI组件,例如`<h:inputText>`(文本输入框)、`<h:commandButton>`(命令按钮)等。此外,还有第三方库如PrimeFaces、RichFaces和IceFaces等提供了更多...
在JSF应用中,`.jar` 文件通常包含JSF实现库、组件库或自定义组件的实现。开发者可以将这些库导入到项目中,以便利用JSF的功能。 **使用JSF进行开发**: 1. **环境配置**:首先需要在项目中引入JSF的库,如Mojarra...
(难道是我下载的JSF reference implementation 版本的原因?) <br>无论如何,最后我还是找到了列表中的所有jar。 <br> * jsf-impl.jar * jsf-api.jar * commons-digester.jar * ...
**JSF 1.2核心详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的组件模型框架,特别适用于Web...而`core jsf.chm`文件很可能是关于JSF 1.2的官方文档或教程集合,可以帮助深入学习和掌握这些概念。
【标题】"lib文件,jar包,jsf+spring"涉及的是Java开发中的关键...开发者需要下载完整的两个包,并将其中的库文件添加到项目环境中,然后根据项目需求配置JSF和Spring的集成,以便于开发和管理高效、模块化的Web应用。
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发过程,提供...下载并正确引入这些库,开发者可以利用JSF和JSTL的强大功能,构建功能丰富的、基于Java的Web应用程序。
这个CHM文件包含了JSF的核心API文档,是开发者在编写JSF应用时的重要参考。CHM(Compiled HTML Help)是一种微软的文件格式,用于存储和查看帮助信息。在`JSF_API.CHM`中,你可以找到关于JSF接口、类和方法的详细...