从数据库下载文件

public ActionForward downloadFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
	long id=ParamUtils.getLongParameter(request, "id", 0l);
	try {
		HqjcDepaAttach annex=(HqjcDepaAttachImpl)depaAttachManager.get(id);
		//String fileName = this.currentTime();
		String filePath = request.getRealPath("/temp")+annex.getAccachValue();
		File file = new File(filePath);
		byte[] bytes = annex.getAttachFile();
		FileOutputStream fos = new FileOutputStream(file); 
		fos.write(bytes);
        if(fos != null){
           fos.flush();
           fos.close();
		}
		String suffix=annex.getAccachValue().substring(annex.getAccachValue().indexOf(".")+1).toUpperCase();
		String dataType="application/octet-stream";
		if("BMP".equals(suffix)){
			dataType="image/bmp";
		}else if("GIF".equals(suffix)){
			dataType="image/gif";
		}else if("JPEG".equals(suffix)||"JPG".equals(suffix)){
			dataType="image/jpeg";
		}else if("TXT".equals(suffix)){
			dataType="text/plain";
		}else if("PDF".equals(suffix)){
			dataType="application/pdf";
		}else if("DOC".equals(suffix)){
			dataType="application/msword";
		}else if("XLS".equals(suffix)){
			dataType="application/vnd.ms-excel";
		}else if("PPT".equals(suffix)){
			dataType="application/vnd.ms-powerpoint";
		}else if("HTML".equals(suffix)||"HTM".equals(suffix)){
			dataType="text/html";
		}else if("XML".equals(suffix)){
			dataType="text/xml";
		}
	    // 现在用户对该文档拥有下载权限 以字节流的形式下载文件
		response.setContentType(dataType); // 设置头,浏览器不认识就提示下载
		response.setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode(annex.getAccachValue(), "UTF-8"));
		// 以流的形式写出文件
		FileInputStream bis = new FileInputStream(file);//以流的形式写出文件
		OutputStream bos = response.getOutputStream();
		byte[] buff = new byte[1024];
		int readCount = 0;
		readCount = bis.read(buff);
		while (readCount != -1){
		    bos.write(buff, 0, readCount);
			readCount = bis.read(buff);
		}
		if (bis != null) bis.close();
		if (bos != null) bos.close();
		//下载完毕,给浏览器发给完毕的头
		response.setStatus(HttpServletResponse.SC_OK);
		response.flushBuffer();

	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}	
	
	
	return null;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值