Java WEB 文件下载

5 篇文章 0 订阅

现在要做一个基于springMVC的文件下载功能,直接用

<a href="文件路径"></a>的方式进行操作效果不好

不好在什么地方呢

就是点击链接之后,如果是一个文本文件,那么就自动打开了,而不是下载,如果是图片也是一样,是打开而不是下载操作

那么怎么办呢,经过研究,文件下载其实就是一个请求,通过response响应来实现文件下载。

以下是通过二进制流的形式实现的文件下载,进行了注释,自行参照

/**
	 * 下载文件
	 */
	@RequestMapping(value="downLoadFile")
	public void downLoadFile(ReimFjInfo reimFjInfo,HttpServletRequest request,HttpServletResponse response){
		log.info("下载文件");
		//以二进制流的形式进行文件下载
		try {
			String fileName=new String(request.getParameter("fjName").getBytes("ISO-8859-1"),"UTF-8");
			//获得文件信息
			File downFile = new File(reimFjInfo.getFjUrl());
			//获得文件的字节输入流
			InputStream bufferStream = new BufferedInputStream(new FileInputStream(downFile));
			byte[] buffer = new byte[bufferStream.available()];
			bufferStream.read(buffer);
			bufferStream.close();
			response.reset();
			
			//设置response的Header,需要设定文件名称,该文件名称即为下载文件时候显示的文件名称
			response.setHeader("Content-disposition", "attachment;filename="+new String(fileName.getBytes("gb2312"), "ISO8859-1" ));
			//不确定文件类型的时候,contentType就用以下形式,这是.*( 二进制流,不知道下载文件类型)
			response.setContentType("application/octet-stream");
			//获得response的字节输出流
			OutputStream out  = new BufferedOutputStream(response.getOutputStream());  
            out.write(buffer);
            out.flush();
            out.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值