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);
    	}
    
     
     转自:https://www.cnblogs.com/xian-yu/p/13267312.html
  • 相关阅读:
    仿12306客户端
    object-c开发中混合使用或不使用ARC
    Objective-c 的 @property 详解
    iPhone的Push(推送通知)功能原理浅析
    Objective-C内存管理教程和原理剖析3
    IDEA 创建JAVA Maven Web 工程
    Linux CenOS 7 安装Redis
    Linux CenOS 7 安装Tomcat
    Linux CentOS 7 安装wordpress
    Linux CenOS 7 安装JDK
  • 原文地址:https://www.cnblogs.com/javalinux/p/15665883.html
Copyright © 2011-2022 走看看