zoukankan      html  css  js  c++  java
  • springboot下载文件(使用流)

    1.FileServiceImpl.java

    /**
    	 * 下载文件
    	 * 
    	 * @param address
    	 * @param response
    	 * @throws IOException
    	 */
    	@Override
    	public void downloadFile(String address, HttpServletResponse response) throws IOException {
    		if (address.contains("%")) {
    			try {
    				address = URLDecoder.decode(address, "UTF-8");
    			} catch (UnsupportedEncodingException e) {
    				throw new CyException("文件路径有误");
    			}
    		}
    		ServletOutputStream out = null;
    		FileInputStream in = null;
    		try {
    			in = new FileInputStream(new File(address));
    			String[] dir = address.split("/");
    			String fileName = dir[dir.length - 1];
    			// 设置响应类型为html,编码为utf-8,处理相应页面文本显示的乱码
    			response.setContentType("application/octet-stream");
    			// 设置文件头:最后一个参数是设置下载文件名
    			response.setHeader("Content-disposition", "attachment;filename=" + fileName);
    			out = response.getOutputStream();
    			// 读取文件流
    			int len = 0;
    			byte[] buffer = new byte[1024 * 10];
    			while ((len = in.read(buffer)) != -1) {
    				out.write(buffer, 0, len);
    			}
    			out.flush();
    		} catch (FileNotFoundException e) {
    			throw new CyException("文件路径有误");
    		} finally {
    			response.flushBuffer();
    			try {
    				out.close();
    				in.close();
    			} catch (NullPointerException e) {
    				throw new CyException("responseFileStream stream close() error:NullPointerException" + e.toString());
    			} catch (Exception e) {
    				throw new CyException("responseFileStream stream close() error:" + e.toString());
    			}
    		}
    
    	}
    

    2.FileController.java

    @RequestMapping(value = "/downloadFile", method = RequestMethod.GET)
    	@ResponseBody
    	@Validated
    	public void downloadFile(@NotBlank @RequestParam(value = "address") String address, HttpServletResponse response)
    			throws IOException {
    		fileService.downloadFile(address, response);
    	}
    
  • 相关阅读:
    串的模式匹配
    Linux_ch02
    Linux操作简介
    Stack&Queue
    单链表
    工作中用到的oracle字符串分割整理
    maven_spring mvc_mina_dome(实体,文件,批传)(spring mina 初学dome)
    求整数和与均值
    简单计算器
    苹果和虫子2
  • 原文地址:https://www.cnblogs.com/xian-yu/p/13267312.html
Copyright © 2011-2022 走看看