jsp中实现文件下载

jsp中实现文件下载的最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>。

但是这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不安全的因素。因此可以采用其它方式实现下载,可以采用:1、RequestDispatcher的方式进行;2、采用文件流输出的方式下载。

 

头文件设置

response.setContentType("application/文档类型")  //文档类型包括:mstxt,msword,pdf
//contentType可设置的类型有
<option   value="image/bmp">BMP</option>  
<option   value="image/gif">GIF</option>  
<option   value="image/jpeg">JPEG</option>  
<option   value="image/tiff">TIFF</option>  
<option   value="image/x-dcx">DCX</option>  
<option   value="image/x-pcx">PCX</option>  
<option   value="text/html">HTML</option>  
<option   value="text/plain">TXT</option>  
<option   value="text/xml">XML</option>  
<option   value="application/afp">AFP</option>  
<option   value="application/pdf">PDF</option>  
<option   value="application/rtf">RTF</option>  
<option   value="application/msword">MSWORD</option>  
<option   value="application/vnd.ms-excel">MSEXCEL</option>  
<option   value="application/vnd.ms-powerpoint">MSPOWERPOINT</option>  
<option   value="application/wordperfect5.1">WORDPERFECT</option>  
<option   value="application/vnd.lotus-wordpro">WORDPRO</option>  
<option   value="application/vnd.visio">VISIO</option>  
<option   value="application/vnd.framemaker">FRAMEMAKER</option>  
<option   value="application/vnd.lotus-1-2-3">LOTUS123</option> 
response.setHeader("Content-Disposition", "attachment; filename="+要显示在客户端的文件名称);

 

输出流设置

//获取输出流
OutputStream output = response.getOutputStream();
		
//从file中创建一个输入流 file为文件的物理路径
InputStream fileIn = new FileInputStream(file);
		
//输入缓冲流
BufferedInputStream bis=new BufferedInputStream(fileIn);
		
//输出缓冲流
BufferedOutputStream bos=new BufferedOutputStream(output);
		
//缓冲字节数
byte data[]=new byte[4096];
int size=0;
size=bis.read(data);
		
//读取并输出文件
while (size!=-1){
	bos.write(data,0,size);
	size=bis.read(data);
}
bis.close();
//清空输出缓冲流 
bos.flush();
bos.close();
output.close();

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值