springmvc 文件下载

1、使用servlet的API实现

参考:http://my.oschina.net/u/1394615/blog/311307

@RequestMapping("/download")
    public String download(String fileName, HttpServletRequest request,
            HttpServletResponse response) {
        response.setCharacterEncoding("utf-8");
        response.setContentType("multipart/form-data");
        response.setHeader("Content-Disposition", "attachment;fileName="
                + fileName);
        try {
            String path = Thread.currentThread().getContextClassLoader()
                    .getResource("").getPath()
                    + "download";//这个download目录为啥建立在classes下的
            InputStream inputStream = new FileInputStream(new File(path
                    + File.separator + fileName));

            OutputStream os = response.getOutputStream();
            byte[] b = new byte[2048];
            int length;
            while ((length = inputStream.read(b)) > 0) {
                os.write(b, 0, length);
            }

             // 这里主要关闭。
            os.close();

            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
            //  返回值要注意,要不然就出现下面这句错误!
            //java+getOutputStream() has already been called for this response
        return null;
    }

2、使用spring的API实现

参考:http://blog.csdn.net/clj198606061111/article/details/20743769

package com.clj.test.down.util;  

import java.io.File;
import java.io.IOException;  

import org.apache.commons.io.FileUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;  

/**
 * <一句话功能简述>
 * <功能详细描述>
 *
 * @author  Administrator
 * @version  [版本号, 2014年3月7日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
@Component
@Scope("prototype")
@RequestMapping("/downloadFile")
public class DownloadAction
{  

    @RequestMapping("download")
    public ResponseEntity<byte[]> download() throws IOException {
        String path="D:\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\springMVC\\WEB-INF\\upload\\图片10(定价后).xlsx";
        File file=new File(path);
        HttpHeaders headers = new HttpHeaders();
        String fileName=new String("你好.xlsx".getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题
        headers.setContentDispositionFormData("attachment", fileName);
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
                                          headers, HttpStatus.CREATED);
    }
}  

打发大丰

时间: 2024-10-12 20:59:22

springmvc 文件下载的相关文章

SpringMVC文件下载与JSON格式(七)

点击查看上一章 现在JSON这种数据格式是被使用的非常的广泛的,SpringMVC作为目前最受欢迎的框架,它对JSON这种数据格式提供了非常友好的支持,可以说是简单到爆. 在我们SpringMVC中只需要添加jackjson的jar包后RequestMappingHandlerAdapter会将MappingJacksonHttpMessageConverter装配进来.而我们使用也只需要使用注解修饰就可以完成JSON格式的转换 @ResponseBoy //@ResponseBody @Req

SpringMvc文件下载

1 /** 2 * 文件下载 3 * @Description: 4 * @param fileName 5 * @param request 6 * @param response 7 * @return 8 */ 9 @RequestMapping("/download") 10 public String downloadFile(@RequestParam("fileName") String fileName, 11 HttpServletRequest

SpringMvc 文件下载 详解

最近SSM 需要用到文件下载,以前没用过,在百度上找了好久发现没有一篇博客,对于此段代码进行详细讲解, 这里是本人的个人总结,跟大家分享一下!!!不谢 /** * 文件下载 * ResponseEntity:该类实现响应头.文件数据(以字节存储).状态封装在一起交给浏览器处理以实现浏览器的文件下载 * <p> * ResponseEntity 也可作为响应数据使用 与@ResponseBody 注解功能相似 * 但是ResponseEntity的优先级高于@ResponseBody * 在不是

springmvc文件下载之文件名下划线问题终极解决方案

直接上代码:Action中代码片段. @RequestMapping("download")public String download(ModelMap model, @ModelAttribute("e") Template t, HttpServletResponse response, HttpServletRequest request) throws Exception { Account acc = getLoginAccount(); if(acc=

SpringMVC 文件下载的配置

页面: <fieldset> <legend>Download annotator list</legend> <img src="pages/tools/listannotator/img/text.png" id="downloadAnnotatorListCsvImg"/>  <img src="pages/tools/listannotator/img/xls.png"/> &l

SpringMVC:学习笔记(9)——文件下载

SpringMVC-文件下载 说明 两个案例 1.为登录用户提供下载服务. 2.阻止仅通过输入网址即可获取下载. 文件下载概览 为了将文件发送给浏览器,我们需要在控制器中完成以下操作: 对请求处理方法使用void返回类型,并且在方法中添加HttpServletResponse参数. 将响应的内容类型设为文件的内容类型.Content-Type标题在某个实体的body中定义数据的类型,并包含媒体类型和子类型标识符.如果不清楚内容类型,并且希望浏览器失始终显示保存对话框,则将它设为APPLICATI

SpringBoot图文教程4—SpringBoot 实现文件上传下载

有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 大哥大姐新年好,点赞转发不要少 SpringBoot 图文系列教程技术大纲 鹿老师的Java笔记 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2—日志的使用「logback」「log4j」 Sp

SpringMVC实现单文件上传、多文件上传、文件列表显示、文件下载

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和SpringMVC文件

SpringMVC(四)-- 文件下载、自定义拦截器、异常处理

1.文件下载 用ResponseEntity<byte[]> 返回值完成文件下载 具体参见本博客之前的<文件上传下载> @RequestMapping(value="/testResponseEntity") public ResponseEntity<byte[]> testResponseEntity(HttpServletRequest request) throws Exception{ ServletContext servletConte