第一种下载方式:
此方式 下载,在服务器上必须有文件 的存在
用java 程序 从服务器 上下载文件到 本地电脑上
和上传不一样的是,下载是从服务器上的文件复制到本地电脑上
那么,服务器必须 是输出者 ,本地就是接收者
服务器端的输出,只能是response 对象 , 本地接收对象 就是File ,从response 到 File 之间 需要一座桥梁,那么这座桥梁就是 io ----------流
1、用到 response 对象从服务器端输出此文件
2、用File 创建对象
3、用字节/字符流 进行输送
public boolean download(HttpServletResponse response,
ActionContext context) {
boolean flag = true;
try {
String filePath2 = context.getRequest().getRealPath("/"); //取当前系统路径
// path是指欲下载的文件的路径。在path 路径下创建名为
File file = new File(filePath2 + "zjh/" + "下载.xls"
if (!file.exists()){
flag = false;
}
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1)
.toUpperCase();
// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(
filePath2 + "zjh/" + "下载.xls"
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
response.addHeader("Content-Disposition", "attachment;filename="+ java.net.URLEncoder.encode("下载.xsl","utf-8"));
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
flag = false;
}
// return response;
return flag;
}
注:服务器上必须要有当前被下载的文件,才能运用此方法下载