代码生成文件输出到客户端进行下载或者打开操作
Document document =? new Document(PageSize.A4.rotate()); //创建一个文档
//输入word文档? 将文档输出到buffere中
//buffere 可以用newFileOutputStream(“"d:\\testWord.doc";”)代替 这样就将生成的word文档直接存储到指定磁盘空间上了
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);//将缓冲区中的信息写入到输出流中 此时应该是浏览器弹出窗口提供“打开“或者“下载”
<%???
String fileName =(String)request.getAttribute("fileName");
fileName = newString(fileName.getBytes(),"ISO-8859-1");
response.setContentType("application/doc");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "inline; filename=\""+fileName+"\"");???
7:设置浏览器输出的文件 文件名—设置文件头信息? response.setHeader(“Content-disposition”,”attachment;filename”+文件名) 文件以附件的形式下载或者打开
8:设置输出文件的大小 response.setContentLength(缓冲文件大小);
9:获取到servlet到浏览器的输出流 ServletOutputStreamout=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的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。