後端傳文件流到前端下載

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

相關文章
相關標籤/搜索