Java中将生成的文件 如word excel 等文件不直接存储在磁盘上,以流的方式传送到浏览器,用户选择利用本机的相应阅读软件打开或者保存到磁盘。
得到的功能是点击一个按钮触发一个action,不存盘的情况下提供一个下载文件。
以Itext导出word为例子进行总结:
Document document = new Document(PageSize.A4.rotate()); //创建一个文档
ByteArrayOutputStream buffere= new ByteArrayOutputStream();//创建一个缓冲区 代替磁盘路径代表的存储空间
Try
{
//输入word文档 将文档输出到buffere中
//buffere 可以用new
FileOutputStream(“"d:\\testWord.doc";”)代替 这样就将生成的word文档直接存储到指定磁盘空间上了
RtfWriter2
writer = RtfWriter2.getInstance(document,
buffere);
document.open();//开始创建文档中的内容
}
catch(Exception){}
document.close();//文档内容创建完成
String filename1 = new String(("红包锦旗情况统计表").getBytes(), "ISO-8859-1") + ".doc";// 导出名字是默认的文件名
response.setContentType("application/vnd.ms-word");//标识输出的文件是什么类型的
excel:appilcation/vnd.ms-word
response.setHeader("Content-disposition", "attachment;filename="+ filename1);// 设置头信息
response.setContentLength(buffere.size());//设置文件的大小
ServletOutputStream out = response.getOutputStream();//获得流向浏览器的输出流
buffere.writeTo(out);//将缓冲区中的信息写入到输出流中 此时应该是浏览器弹出窗口提供“打开“或者“下载”
out.flush();//选择打开方式后,程序将流中的信息全部输出。
至此,文件的生成及输出到浏览器的功能就结束了。
<%
String fileName =
(String)request.getAttribute("fileName");
fileName = new
String(fileName.getBytes(),"ISO-8859-1");
response.setContentType("application/doc");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "inline; filename=\""+fileName+"\"");
%>
和Action后台代码比较接近 jsp在内存中是被转化成servlet文件 信息处理完毕后会被解析为相应的格式输出 如html/doc、pdf等等格式 这个格式是由response.setContentType(“application/doc”);来设置,后面会提到。
1:创建文档文件
2:创建缓冲区
3:设置将生成的文档写入到指定的缓冲区中
4:开始创建文档 document.open
5:文档创建完成 document.close 此时文档已经写入到缓冲区中
6:设置文件类型 response.setContentType(“application/vnd.ms-word”);文件是否属于下载类型(html为非下载)这一步必须在第7步前。
7:设置浏览器输出的文件 文件名—设置文件头信息 response.setHeader(“Content-disposition”,”attachment;filename”+文件名) 文件以附件的形式下载或者打开
8:设置输出文件的大小 response.setContentLength(缓冲文件大小);
9:获取到servlet到浏览器的输出流 ServletOutputStream
out=response.getOutputStream();
10:将缓冲区中的信息写入到输出流中 buffere.weiteTo(out);
11:将输出流中的信息输出 out.flush();
关于ByteArrayOutputStream
:
ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。具体用法如下:
ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。
ByteArrayInputStream: 可以将字节数组转化为输入流
(1)Content-Type的作用
该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型。
例如:当Content-Type
的值设置为text/html和text/plain时,前者会让浏览器把接收到的实体内容以HTML格式解析,后者会让浏览器以普通文本解析.
2)Content-Disposition 的作用
当Content-Type
的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。
分享到:
相关推荐
其中,“wsdl2java”工具就是CXF提供的一个非常实用的功能,它可以根据WSDL文件自动生成客户端和服务端所需的Java代码。本文将详细介绍如何使用CXF的“wsdl2java”工具来生成Webservice客户端代码。 #### 二、基础...
在日常开发中,通常是由开发团队构建WebService服务端,客户端则通过服务端提供的WS-Definition Language (WSDL) 文件生成客户端代理并进行交互。但有时也会遇到特殊情况,比如与特定企业合作时,对方可能仅提供WSDL...
本篇将详细讲解如何利用Axis2根据WSDL(Web服务描述语言)文件生成客户端代码。 WSDL是一种XML格式的规范,它定义了Web服务的接口,包括服务提供的操作、输入和输出消息的结构,以及服务的位置。在 Axis2 中,我们...
本文档主要介绍了使用Web Servers和SOAP协议来生成接口文件的方法,旨在帮助开发者快速生成所需的接口文件,免去到客户现场连接内网下载的时间。 一、Web Servers和SOAP协议的概述 Web Servers是指一类基于HTTP...
在MyEclipse中,有一个内置的功能,可以将WSDL文件转换为Java代码,这个过程通常被称为“代码生成”或“代码反编译”。这样,开发者无需手动编写调用Web服务的Java代码,只需导入WSDL文件,MyEclipse就能自动生成...
本文将详细介绍如何使用Eclipse 3.x版本从WSDL文件快速生成客户端Java代码。 首先,理解WSDL文件的结构至关重要。WSDL文件包含了服务的接口定义,包括端点地址(服务位置)、消息类型(输入和输出数据的定义)、...
通过查看和分析源代码,可以学习到如何在C#或VB.NET中操作文件系统、处理XML数据以及实现文件操作的实用技巧。同时,也可以根据实际需求对代码进行定制,比如增加过滤特定类型的文件、添加权限检查等功能。
开发者可以使用Visual Studio打开这个文件,查看和编辑项目的源代码和设置。 6. **BuildWsdl**:这可能是一个项目文件或者可执行文件,它是WSDL生成工具的核心部分,包含了生成WSDL文档的具体逻辑和算法。用户可能...
WSDL文件包含了服务的端点(或地址)、操作(或服务方法)、输入和输出消息的定义,以及绑定信息,这些信息用于定义服务如何通过网络进行通信,通常是HTTP或SOAP协议。 在Eclipse中,我们可以利用其内置的工具来...
例如,可以采用多线程处理,分批次生成文件,避免一次性加载过多数据导致服务器压力过大。 6. **安全与权限**:在实际应用中,确保用户只能访问和操作他们有权查看的文件,防止数据泄露。PageOffice提供了安全机制...
本示例代码主要通过ASP的流输出技术来实现文件的下载功能。具体来说,它是利用`ADODB.Stream`对象读取文件内容,并通过HTTP响应将这些内容发送到客户端浏览器,从而实现文件下载的目的。这种方式的一个显著优势是...
TCP服务器可以监听特定端口,当收到客户端的数据请求时,接收到的数据可以被解析并写入SD卡上的.csv文件。TCP协议提供了可靠的数据传输,确保数据的完整性和顺序。 在TCP服务器编程中,我们需要处理连接建立、数据...
在实际应用中,Java代码生成器可以被扩展以适应各种需求,例如根据数据库模式生成DAO层、Service层以及实体类,或者自动生成RESTful API的客户端代码。开发者可以利用模板引擎,如FreeMarker或Velocity,结合XML配置...
4. **文件保存与输出**:生成每个文档后,需要将其保存到本地或者服务器的指定位置,或者直接以流的形式发送给客户端下载。PageOffice提供了丰富的文件操作接口,可以方便地完成这一步。 5. **优化性能**:在处理...
在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定的服务器目录下。此方法已经过测试验证,能够满足基本的需求,并且代码易于...
- 在这个类中编写代码来实例化服务客户端,并调用相关的Web服务操作。 - 运行测试类,查看控制台输出或结果页面来确认是否成功调用了Web服务。 #### 四、注意事项 - 在选择动态Web项目版本时,应尽量避免使用高于...
本篇将详细介绍如何进行DBF文件的读写操作,以及如何在服务器上生成并下载DBF、Excel和TXT文件。 1. **DBF文件读写操作**: - **库的选择**:Java中可以使用JDBF、DBFReader、Apache POI等库来处理DBF文件。例如,...
在这个"ASP生成HTML文件案例"中,我们将深入探讨如何利用ASP来创建和操作HTML文件,特别是通过模板文件进行生成。 1. **ASP基本结构与语法** ASP文件是文本文件,扩展名为.asp。它们包含HTML代码以及嵌入的服务器...