`
superheizai
  • 浏览: 65501 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSF文件下载2

    博客分类:
  • JSF
阅读更多
不说别的了,上代码
首先流获得
 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文件下载功能的实现涉及到JSF上下文、Servlet上下文、HTTP响应头设置、文件流处理等多个关键环节。理解并熟练掌握这些知识点对于开发Web应用程序,特别是处理文件操作的场景非常重要。

    JSF文件上传下载

    以上就是JSF文件上传和下载的基本实现。为了确保安全性和性能,还需要考虑错误处理、文件大小限制、临时文件管理以及用户权限控制等细节。同时,现代的Web开发中,还可能结合使用CDN(内容分发网络)和云存储服务来...

    jsf 文档 jsf

    jsf 文档 jsf 文档 jsf 文档 jsf 文档

    jsf(jar文件下载)

    jsf jar文件 下载 jsf开发 jsf(jar文件下载) jsf-api.jar

    jsf 文件上传和下载

    在JavaServer Faces (JSF)框架中,文件上传和下载是常见的功能,广泛应用于Web应用程序中,例如用户需要上传个人照片、下载文档等。本文将详细介绍如何在JSF环境中实现文件上传和下载,并提供一个可直接在Eclipse下...

    JSF帮助文档

    但是,根据上下文,我们可以推断文档可能包含有关JSF的详细教程或参考资料,比如如何配置JSF环境、创建JSF组件、处理用户事件以及调试JSF应用程序等内容。 总的来说,JSF是一个强大的工具,它为Java开发者提供了...

    JSF上传 JSF大文件上传 JSF上传代码 JSF上传源代码

    JSF(JavaServer Faces)是Java...对于希望学习或改进自己JSF文件上传功能的开发者来说,这是一个宝贵的资源。通过深入研究源代码,可以了解到如何处理大文件、如何优化上传性能以及如何确保上传过程的稳定性和安全性。

    JSF API帮助文档

    **导航** 在JSF中是通过配置文件(faces-config.xml)或编程方式实现的,决定了根据用户的操作如何重定向到不同的页面。 **JSF API** 还提供了许多其他功能,如国际化支持、错误处理和事件传播等。这个帮助文档会...

    JSF 上传文件例子

    1. 开发自定义组件:这是解决JSF文件上传问题的一种方法,通过编写自定义组件,可以扩展JSF的功能以支持文件上传。这通常涉及到解析multipart/form-data请求,处理文件流,并将其与后台的管理Bean进行交互。 2. ...

    jsf标签官方帮助文档

    2. **JSF生命周期**:JSF应用遵循一系列阶段,从初始化到渲染响应。理解每个阶段的作用对于有效调试和优化代码至关重要。 3. **EL(Expression Language)**:JSF与EL紧密集成,EL用于在视图层表达式中访问和操作...

    jsf1.2 jar包下载

    2. **jsf-impl.jar**:此JAR文件包含了JSF实现,即对JSF API的具体实现。它提供了JSF规范的底层逻辑,包括生命周期管理、渲染器、默认组件实现等。这个实现库使得开发者无需关注底层细节,可以直接使用JSF提供的服务...

    jsf 中文帮助文档

    JSF的中文帮助文档是一个非常宝贵的资源,对于学习和理解这个框架的开发者来说,无论是初学者还是经验丰富的专业人士,都是不可或缺的参考资料。 文档通常分为PDF和CHM两种格式,每种都有其独特的优点。**PDF...

    JSF 很全面的帮助文档

    2. JSF组件库: JSF的核心在于其组件模型。JSF提供了一套内置的UI组件,例如`<h:inputText>`(文本输入框)、`<h:commandButton>`(命令按钮)等。此外,还有第三方库如PrimeFaces、RichFaces和IceFaces等提供了更多...

    JSF包,jsf包,JSF包,jsf包

    在JSF应用中,`.jar` 文件通常包含JSF实现库、组件库或自定义组件的实现。开发者可以将这些库导入到项目中,以便利用JSF的功能。 **使用JSF进行开发**: 1. **环境配置**:首先需要在项目中引入JSF的库,如Mojarra...

    JSF开发必备JAR

    (难道是我下载的JSF reference implementation 版本的原因?) <br>无论如何,最后我还是找到了列表中的所有jar。 <br> * jsf-impl.jar * jsf-api.jar * commons-digester.jar * ...

    core jsf 1.2 jsf 核心

    **JSF 1.2核心详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的组件模型框架,特别适用于Web...而`core jsf.chm`文件很可能是关于JSF 1.2的官方文档或教程集合,可以帮助深入学习和掌握这些概念。

    (分两个包,请下载全)lib文件,jar包,jsf+spring

    【标题】"lib文件,jar包,jsf+spring"涉及的是Java开发中的关键...开发者需要下载完整的两个包,并将其中的库文件添加到项目环境中,然后根据项目需求配置JSF和Spring的集成,以便于开发和管理高效、模块化的Web应用。

    jsf的资源jar文件,下载即可使用

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发过程,提供...下载并正确引入这些库,开发者可以利用JSF和JSTL的强大功能,构建功能丰富的、基于Java的Web应用程序。

    jsf api文档

    这个CHM文件包含了JSF的核心API文档,是开发者在编写JSF应用时的重要参考。CHM(Compiled HTML Help)是一种微软的文件格式,用于存储和查看帮助信息。在`JSF_API.CHM`中,你可以找到关于JSF接口、类和方法的详细...

Global site tag (gtag.js) - Google Analytics