zoukankan      html  css  js  c++  java
  • Java中都通用文件下载(ContentType、文件头、response、out四步骤)

    Java中都通用文件下载(ContentType、文件头、response、out四步骤)  

     

    新浪微博:IT国子监(记得关注噢) http://weibo.com/itguozijian

     

    我们就直接切入主题啦,文件下载只需要四步:

    1.设置文件ContentType类型

    2.设置文件头

    3.通过response获取ServletOutputStream对象(out)

    4.写到输出流(out)中

    下载代码:

    这里我使用的是SpringMVC,不过它在这里的唯一用途就是用来获取ServletContext对象,这个对象的用途,下面实例中有说明

    下载,需要用到两个jar包:commons-fileupload.jar和commons-io.jar

    Java代码 
    1. import org.springframework.stereotype.Controller;  
    2. import org.springframework.web.bind.annotation.RequestMapping;  
    3. import org.springframework.web.context.ServletContextAware;  
    4.   
    5. import javax.servlet.ServletContext;  
    6. import javax.servlet.ServletOutputStream;  
    7. import javax.servlet.http.HttpServletResponse;  
    8. import java.io.*;  
    9.   
    10. @Controller  
    11. public class FileController implements ServletContextAware{  
    12.     //Spring这里是通过实现ServletContextAware接口来注入ServletContext对象  
    13.     private ServletContext servletContext;  
    14.   
    15.   
    16.     @RequestMapping("file/download")  
    17.     public void fileDownload(HttpServletResponse response){  
    18.         //获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载  
    19.         String path = servletContext.getRealPath("/");  
    20.   
    21.         //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型  
    22.         response.setContentType("multipart/form-data");  
    23.         //2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)  
    24.         response.setHeader("Content-Disposition", "attachment;fileName="+"a.pdf");  
    25.         ServletOutputStream out;  
    26.         //通过文件路径获得File对象(假如此路径中有一个download.pdf文件)  
    27.         File file = new File(path + "download/" + "download.pdf");  
    28.   
    29.         try {  
    30.             FileInputStream inputStream = new FileInputStream(file);  
    31.   
    32.             //3.通过response获取ServletOutputStream对象(out)  
    33.             out = response.getOutputStream();  
    34.   
    35.             int b = 0;  
    36.             byte[] buffer = new byte[512];  
    37.             while (b != -1){  
    38.                 b = inputStream.read(buffer);  
    39.                 //4.写到输出流(out)中  
    40.                 out.write(buffer,0,b);  
    41.             }  
    42.             inputStream.close();  
    43.             out.close();  
    44.             out.flush();  
    45.   
    46.         } catch (IOException e) {  
    47.             e.printStackTrace();  
    48.         }  
    49.     }  
    50.   
    51.     @Override  
    52.     public void setServletContext(ServletContext servletContext) {  
    53.         this.servletContext = servletContext;  
    54.     }  
    55. }  
  • 相关阅读:
    docker生态系统
    访问远程的docker
    docker实践4
    docker实践3
    docker实践
    Spark快速入门
    shuffle和sort分析
    hadoop原理
    apacheds的客户端
    LDAP apacheds解决方案
  • 原文地址:https://www.cnblogs.com/wzhanke/p/4817736.html
Copyright © 2011-2022 走看看