黑马day15 文件下载

1.文件下载..

response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename,"utf-8")); 通知浏览器以下载的方式打开文件...

response.setContentType(this.getServletContext().getMimeType(filename));//通知浏览器下载的MIME类型

2.文件下载的servlet

package cn.itheima.download;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.itheima.utils.IOUtils;

public class DownLoadServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.获取要下载的文件
		String filename = request.getParameter("file");
		response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename,"utf-8"));//告知浏览器要以下载的方式打开...而不是直接打开
		response.setContentType("");//告知浏览器文件的类型
		InputStream in=new FileInputStream(this.getServletContext().getRealPath(filename));
		OutputStream out=response.getOutputStream();
		IOUtils.In2Out(in, out);
		IOUtils.closeIO(in, null);

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

2.工具类IOUtils

提供了两个方法一个是读取in中的流中的数据写到out流中

另一个是关闭资源流的函数、

package cn.itheima.utils;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class IOUtils {
	private IOUtils(){

	}
	/**
	 * 读取流中的数据写到输出流中
	 * @param in
	 * @param out
	 * @throws IOException
	 */
	public static void In2Out(InputStream in,OutputStream out) throws IOException{
		int len=0;
		byte b[]=new byte[1024];
		while((len=in.read(b))!=-1){
			out.write(b, 0, len);
		}
	}
	/**
	 * 关闭资源
	 * @param in
	 * @param out
	 */
	public  static void closeIO(InputStream in,OutputStream out){
		if(in!=null){
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}finally{
				in=null;
			}
		}
		if(out!=null){
			try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}finally{
				out=null;
			}
		}
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 23:14:33

黑马day15 文件下载的相关文章

黑马day15 仿网盘案例

项目介绍: 本项目主要完成文件的上传以及下载的功能的一个综合案例. 1.搭建环境... 导入jar包以及开发的工具类... jar包: 提供俩个工具类..一个是IOUtils主要提供了输出流和输入流的对接,和关闭流资源的函数 一个是提供数据源的工具类DataSourceUtils IOUtils: package cn.itheima.utils; import java.io.IOException; import java.io.InputStream; import java.io.Out

黑马day03 文件下载&中文乱码原理以及url编码

在请求码和响应码中的数据只能是英文状态的即iso8859-1,不可能是中文的,因此,如果文件的名字是中文的需要进行url编码 //这句话是告诉浏览器以下载的方式,被发送的数据要进行url编码,对文件的名字进行url编码-->编码原理: //将美女转化为utf-8的形式然后转化为16进制,前面加% utf-8一个汉字三个字节下面的只是假设 //美 1100 1001  1110 0110   1000 0001-->%2a %3d %4e //女 1110 1011  1111 0110   1

黑马day15 文件上传&apche的工具包

1.肯定要导入apche的jar包 2.要使用的类的介绍.. 2.1DiskFileItemFactory public DiskFileItemFactory(int sizeThreshold, java.io.File repository) public DiskFileItemFactory() public void setSizeThreshold(int sizeThreshold) --用来设定内存缓冲区的大小,默认是10k public void setRepository(

【黑马程序员】第12课:文件上传&文件下载&注解

<pre> day12 上节内容回顾 1.jstl的标签 *if  choose *forEach <c:forEachvar="l" items="${list}"> 2.jsp开发模式 *模型一 *模型二(mvc模式) **mvc模式 ***m:模型,使用javabean ***v:视图,使用jsp ***c:控制器,使用servlet *dao模式:数据访问对象,专注于对数据库的操作 **首先创建接口,在接口里面定义操作数据库的方法 *

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

618黑马的背后,锤子科技也用ERP?还是SAP的?

2017年8月,罗永浩宣布锤子科技获得约10亿人民币融资,接下来的未来3年要让锤子手机进入到国内市场三强,未来5年成为全球三强. 在2017年京东618手机销售排行榜, 6月1日至18日的手机累计销量排名中,锤子科技位列第七.手机销售额排名第八,与苹果.华为.小米等大牌厂商共列TOP10,成为最强黑马.就在去年 618时,锤子科技还默默无闻,今年凭借着坚果Pro实现了品牌销售额同比增长3006%,位居增长第一. 在锤子科技成为今年618黑马的背后,除了坚果Pro的亮眼技术与设计外,还有一个默默做

PHP实现文件下载

PHP实现文件下载 PHP下载文件 js下载文件 项目操作中不可避免要提供文件的下载,有时候要写一些逻辑判断或者提示啥,那下载的方法就需要做些调整.做个下载文件的集锦: readfile — 输出文件 (手册上有说明:读入一个文件并写入到输出缓冲.) <?php $file = 'monkey.gif' ; if ( file_exists ( $file )) { header ( 'Content-Description: File Transfer' ); header ( 'Conten

struts2文件下载

<!-- 文件下载 --> <action name="download" class="cn.action.demo2.DownloadAction"> <!-- 返回 流结果 --> <result type="stream"> <!-- inputName 用于指定 返回输入流的方法名 默认值 inputStream --> <!-- targetFile 需要在Action

Struts2 多文件下载

Step1:导入支持jar包 commons-fileupload-1.3.1.jar commons-io-2.4.jar jstl-1.2.jar standard-1.1.2.jar commons-compress-1.10.jar 文件压缩工具包 Step2:编写请求下载jsp <script type="text/javascript" src="jquery-1.8.3.js"></script> <%@taglib pr