当提及文件下载的时候,我们首先想到的肯定的是文件的读写,那么是不是这样的喃?它与文件有什么区别喃?事实究竟是怎样的喃,我认为文件的下载就是完成一次文件的读写,区别只在于写的时候是写在了客户端而已。
Struts的文件下载也不过如此,
/**首先在服务器端读:*/
String path = //文件路径及文件名
//获得一个文件读取流<o:p></o:p>
FileInputStream fi = new FileInputStream(path);<o:p></o:p>
//fi.available()文件无阻塞读取字节长度<o:p></o:p>
//创建一个长度的字节数组bt<o:p></o:p>
byte[] bt = new byte[fi.available()];<o:p></o:p>
//将文件转换成字节保存到字节数组bt中<o:p></o:p>
fi.read(bt);<o:p></o:p>
/**服务器往客户端写:*/ <o:p></o:p>
//设置文件是下载还是打开以及打开的方式msdownload表示下载;设置字湖集,//主要是解决文件中的中文信息<o:p></o:p>
response.setContentType("application/<o:p></o:p>
msdownload;charset=GB2312");<o:p></o:p>
//文件下载后的默认保存名及打开方式<o:p></o:p>
String contentDisposition = "attachment; filename=" + "java.txt";<o:p></o:p>
response.setHeader("Content-Disposition",contentDisposition);<o:p></o:p>
//设置下载长度<o:p></o:p>
response.setContentLength(bt.length);<o:p></o:p>
//获取写入流,<o:p></o:p>
ServletOutputStream sos = response.getOutputStream();<o:p></o:p>
//向客户端写数据<o:p></o:p>
sos.write(bt);<o:p></o:p>
将上面的代码复制到struts的action中,如action的path=”download”<o:p></o:p>
在jsp 中:
- do”>DownLoad ok了。欢迎批评指正!