Java 文件下载原理 + Struts2文件下载原理 详解:~~Myself

原文地址为: Java 文件下载原理 + Struts2文件下载原理 详解:~~Myself

###struts2 完成文件下载:
1.首先明确基础知识:InputStream与FileInputStream等都是对内存而言,
那么文件输入流一定是向内存输入流,这对文件下载是有用的。
本质理解下载文件过程:
第一步:就是要下载的文件放到或叫关联到输入流中: 把文件干到内存
new FileInputStream("d:\\test.txt")
第二步:把输入流转换成输出流,即data从内存干到文件当中去,由此完成了文件下载功能。
YE的IP抓包下载Excel原理 就是利用这种输出流的方式:
InputStream in=new FileInputStream(temp);
outStream(in);
temp.delete();
第三步:再配合以下对浏览器的控制:
                        getResponse().setContentType("application/vnd.ms-excel; charset=GBK");
String fileName=buildTitle()+".xls";
getResponse().setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("GB2312"),"ISO-8859-1"));

这就是文件下载的整个原理。

2.struts2下载文件的套路:  框架确实简单-->依然用xml的配置方式,代替了繁琐的硬编码方式。
  第一步:在action当中加一个:

public InputStream getInputStream() throws Exception {

return new FileInputStream("d:\\test.txt");

}
第二步:struts.xml中添加配置:
<action name="TopExportTxt" class="cn.cstnet.trafficView.action.flow.CatchIPTopAction" >
    <result name="success" type="stream">   
  
                      <param name="contentType">text/plain</param>   
  
                      <param name="inputName">inputStream</param>   
  
                      <param name="contentDisposition">attachment;filename="struts2down.txt"</param>   
  
                      <param name="bufferSize">4096</param>   
                  </result>  
</action>

以上两步就完全搞定,非常犀利,具体用时再修改下达到业务需求即可。

转载请注明本文地址: Java 文件下载原理 + Struts2文件下载原理 详解:~~Myself

猜你喜欢

转载自blog.csdn.net/hong2511/article/details/80910591