java 文件下载

第一种下载方式:

     此方式 下载,在服务器上必须有文件 的存在

用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;
	}

 注:服务器上必须要有当前被下载的文件,才能运用此方法下载

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章