springboot实现文件下载功能

文件放在某个目录下,前端实现文件下载功能:

前端代码:

                window
                        .open('/inCallLog/downloadFile?beginTime='
                                + $("#beginTime").val() + '&level='
                                + $("#level").val());

后端代码:

	/**
	 * @功能:下载日志文件
	 */
	@ResponseBody
	@GetMapping("/downloadFile")
	public void downloadFile(HttpServletResponse response, @RequestParam(required = false) String beginTime, @RequestParam(required = false) String level) {
		logService.downloadFile(response, beginTime, level);
	}	
	@Override
	public void downloadFile(HttpServletResponse response, String beginTime, String level) {
		String path = getPath.getPath();
		log.info("--------path:-------" + path);
		Date date = new Date();
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");  
		String today = formatter.format(date);
		if (level.equals("sysRun")) {
			if (beginTime != null && beginTime != "" && !beginTime.equals(today)) {
				path = "C:/logs/admin-server.log.error." + beginTime + ".0";
			} else {
				path = "C:/logs/admin-server.log.error";
			}			
		} else if (level.equals("error")){
			beginTime = (beginTime == null || beginTime == "")?today:beginTime;
			path += "/log/exLog_" + beginTime + ".log";
			File tmp = new File(path);
			if(!tmp.exists()){
				try {
					tmp.createNewFile();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}//创建文件
			}
		} else {
			beginTime = (beginTime == null || beginTime == "")?today:beginTime;
			path += "/log/log_" + beginTime + ".log";
			File tmp = new File(path);
			if(!tmp.exists()){
				try {
					tmp.createNewFile();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}//创建文件
			}
		}
		try {
			downloadFile.downloadFile(response, path);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

 

	public String getPath()
	{
		String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
		if(System.getProperty("os.name").contains("dows"))
		{
			path = path.substring(1,path.length());
		}
		if(path.contains("jar"))
		{
			path = path.substring(0,path.lastIndexOf("."));
			path = path.substring(0,path.lastIndexOf("/"));
			int idx = path.indexOf("/");
			path = path.substring(idx + 1, path.length());
			return path;

		}
		return path.replace("target/classes/", "");
	}
	public void downloadFile(HttpServletResponse response, String path) throws IOException {
		int idx = path.lastIndexOf("/");
		String name = path.substring(idx + 1, path.length());
        InputStream f = new FileInputStream(path);
		response.reset();
        response.setContentType("application/x-msdownload;charset=utf-8");
        try {
            response.setHeader("Content-Disposition", "attachment;filename="+ new String((name).getBytes("gbk"), "iso-8859-1"));//下载文件的名称
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        ServletOutputStream sout = response.getOutputStream();
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(f);
            bos = new BufferedOutputStream(sout);
            byte[] buff = new byte[2048];
            int bytesRead;
            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                bos.write(buff, 0, bytesRead);
            }
            bos.flush();
            bos.close();
            bis.close();
        } catch (final IOException e) {
            throw e;
        } finally {
            if (bis != null){
            	bis.close();
            }
            if (bos != null){
            	bos.close();
            }
        }
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值