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);    
        }    
    }  

    打发大丰

  • 相关阅读:
    Java实现 LeetCode 343 整数拆分(动态规划入门经典)
    Java实现 LeetCode 342 4的幂
    Java实现 LeetCode 342 4的幂
    Java实现 LeetCode 342 4的幂
    Java实现 LeetCode 341 扁平化嵌套列表迭代器
    Java实现 LeetCode 341 扁平化嵌套列表迭代器
    Java实现 LeetCode 341 扁平化嵌套列表迭代器
    Java实现 LeetCode 338 比特位计数
    H264(NAL简介与I帧判断)
    分享一段H264视频和AAC音频的RTP封包代码
  • 原文地址:https://www.cnblogs.com/mabaishui/p/5826834.html
Copyright © 2011-2022 走看看