后端传文件流到前端下载

1.问题

在作项目的时候,碰到前端须要下载文件,其中涉及到的文件必须从后端传送
一开始考虑这个问题解决的时候用静态资源,可是因为项目中的是对文件处理以后及时发送到前端。
后面考虑用文件流的方式,后端以文件流的方式,前端经过a标签直接进入下载。前端

2.解决

关键:后端返回前端的头部中添加设置contentType为x-download.java

代码

前端:后端

<a href="后端文件下载接口地址" >查看更多</a> 
复制代码

后端:GETapp

@Override
public void download(String id, HttpServletRequest request, HttpServletResponse response) {
    //String id=(String)params.get("id");
    File file = new File("/home/hzhao/IdeaProjects/information/src/main/resources/public/", id + ".txt");
    try(InputStream inputStream =  new FileInputStream(file);
        OutputStream outputStream = response.getOutputStream();){
        response.setContentType("application/x-download");
        response.addHeader("Content-Disposition", "attachment;filename="+id+".txt");
        IOUtils.copy(inputStream, outputStream);
        outputStream.flush();
    }catch (Exception e){
        e.printStackTrace();
    }
}
复制代码

3.扩展

流是单向的,分输入流和输出流,参照点为当前程序。ide

输入流是用于读取数据,InputStream 抽象类,定义输入流的读取字节方法,全部的输入流都继承自此类。spa

输出流用于写数据,OutputStream是全部输出流的父类,也是抽象类。code

流分为节点流处理流 节点流是低级流,负责读写数据的流。 处理流式高级流,不能独立存在,用于处理其余的流。主要是为了简化读写数据中的操做。orm

相关文章
相关标签/搜索