zoukankan      html  css  js  c++  java
  • springmvc文件下载

    1、

    文件下载是web项目中常用的服务,在springmvc中常用ResponseEntity类来事项文件下载

    2、ResponseEntity

    ResponseEntity类实现响应头、文件数据(以字节存储)、状态封装在一起交给浏览器处理以实现浏览器的文件下载。简单的说ResponseEntity可以折这HttpHeaders和HttpStatus,通过对HttpHeaders和HttpStatus的设置可以使浏览器执行下载操作。

    3、实现文件下载

    步骤

    1. 获取到文件的存放的真实路径
    2. 根据接收到的文件名和文件真实路径创建文件实例(注意:这里不是创建一个文件,而是创建一个File型的实例)
    3. 设置响应头Content-Disposition浏览器根据这个响应头执行相应的操作和要下载的文件名
    4. 设置响应内容的MIME类型,以二进制流形式传输
    5. 返回ResponseEntity

    具体代码:

    @RequestMapping("/download")
    public ResponseEntity<byte[]> download(@RequestParam("fileName") String fileName, HttpServletRequest req)
    		throws IOException {
    
    	// 获取文件存放的真实路径
    	String realPath = req.getServletContext().getRealPath("/WEB-INF/file");
    	//创建文件实例
    	File file = new File(realPath, fileName);
    	//修改文件名的编码格式
    	String downloadFileName = new String(fileName.getBytes("UTF-8"), "UTF-8");
    	
    	//设置httpHeaders,使浏览器响应下载
    	HttpHeaders headers = new HttpHeaders();
    	//告诉浏览器执行下载的操作,“attachment”告诉了浏览器进行下载,下载的文件 文件名为 downloadFileName
    	headers.setContentDispositionFormData("attachment", downloadFileName);
    	//设置响应方式为二进制,以二进制流传输
    	headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    	return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
    }
    

    4、火狐浏览器测试

    从图中我们可以看到,我们设置的Content-Disposition起效果,传输类型也为二进制。

  • 相关阅读:
    "分段器"组件:<segment> —— 快应用组件库H-UI
    "页内标签"组件:<tab> —— 快应用组件库H-UI
    "标签栏"组件:<main-tab> —— 快应用组件库H-UI
    "导航栏"组件:<nav-bar> —— 快应用组件库H-UI
    如何配置pch文件
    如何清除Xcode8打印的系统日志
    iOS打包ipa给客户测试流程
    如何安装ipa文件
    如何获取苹果手机的UDID
    iOS键盘输入屏幕上移
  • 原文地址:https://www.cnblogs.com/hamawep789/p/10923967.html
Copyright © 2011-2022 走看看