zoukankan      html  css  js  c++  java
  • 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);    
        }    
    }  

    打发大丰

  • 相关阅读:
    Linux 之 文件压缩解压
    Linux 之 文件搜索命令
    Linux 之 文件内容查看
    Linux 之 Vim常用命令
    Linux 之 CentOS练习
    CentOS找不到想要的镜像版本?
    Swoole 简单学习(2)
    Swoole 简单学习
    svn的简单知识
    8、16、32-BIT系列单片机区别与特点
  • 原文地址:https://www.cnblogs.com/mabaishui/p/5826834.html
Copyright © 2011-2022 走看看