1. 程式人生 > >實現檔案的下載功能(SpringMVC)

實現檔案的下載功能(SpringMVC)

實現檔案的下載功能,下載excel檔案
兩種實現方式
一:下載本地指定路徑下的指定檔案。

前端程式碼:

<a id="download1" type="hidden" style='color:red' href='填寫後臺指定coltroller-方法的地址'>&nbsp;&nbsp;下載資料</a>

Controller層程式碼:

@RequestMapping("download")    
    @ResponseBody
    public ResponseEntity<byte[]> download() throws
IOException { ResponseEntity<byte[]> a = null; try { a = tranddelService.downloadExcel(); } catch (Exception e) { e.printStackTrace(); } return a; }

ServiceImpl實現類方法:

public ResponseEntity<byte[]> downloadExcel() throws
Exception{ //下載檔名稱-下載後文件的名稱+字尾 String name = "資料.xls"; //要下載檔案的路徑 String route = Utils.getRequest().getSession().getServletContext().getRealPath("/")+"file/qs/error/error.xls"; //根據路徑建立file File file=new File(route); //存放太那些好的excel的絕對路徑 HttpHeaders headers = new
HttpHeaders(); String fileName=new String(name.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); }

Tip:
Utils.getRequest()為獲取request的方法,自己重寫的。

二:設定模板路徑,填充模板資訊,下載。

設定模板下載和按照路徑下載在實現層有區別

public ResponseEntity<byte[]> downloadExcel() throws Exception{
        ExcelPoi excelPoi = new ExcelPoi();
        /* 個入檔案資料的業務
        Map<String , String> map = new HashMap<String, String>();
        //轉date格式
        Date today = DateUtil.strToDate(date);
        //昨天的 yyyy-MM-dd
        String Yesterday = DateUtil.get4yMd(DateUtil.getNextDay1(today));
        //前天 yyyy-MM-dd
        String TWOYesterday = DateUtil.get4yMd(DateUtil.getNextDay2(today));
        map.put("Yesterday", Yesterday);
        map.put("TWOYesterday", TWOYesterday);
        List<Map<String, Object>> list = bankbilldataDao.getList("getBnoFile", map);*/
        //拼接寫入excel檔案的那個資料格式
        List<String[]> li = retExcelStr(list);
        String filePath = excelPoi.writer(date, li);
        String name = filePath.substring(filePath.length()-19,filePath.length());
        File file=new File(filePath);
        HttpHeaders headers = new HttpHeaders();    
        String fileName=new String(name.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);
}
    //方法的作用:寫入檔案提出的公用類,會呼叫公用類,需要傳進去List<String[]>型別的資料寫入。String[]資料的順序就是一行的從左到右順序
    public List<String[]> retExcelStr(List<Map<String, Object>> list){
        List<String[]> retList = new ArrayList<String[]>(); 
        StringBuilder stringBuilder = new StringBuilder();
        if(list.size() > 0){ 
            for (int i = 0;i < list.size();i++){
                String bno = (String) list.get(i).get("BNO");
                stringBuilder.append(bno).append(",");
            }
            String[] retStrArray = stringBuilder.substring(0,stringBuilder.length()-1).split(",");
            retList.add(retStrArray);
        }
        return retList;
    }

Tip:
excelPoi.writer(date, li);

public  String writer(String date,List<String[]> list) {  
          try {
                Workbook wb = null;  
                wb = new XSSFWorkbook( new FileInputStream(getRequest().getSession().getServletContext().getRealPath("/")+"mode/qsMode.xlsx"));  
                Sheet sheet1=wb.getSheetAt(0);
                if(list.size()>0){
                     for(int i=0;i<list.get(0).length;i++){
                        Row row = (Row) sheet1.createRow(i+1);  
                         Cell cell = row.createCell(0);  
                         cell.setCellValue(list.get(0)[i]);  
                    }
                }
                new File(getRequest().getSession().getServletContext().getRealPath("/")+"file/qs/"+new SimpleDateFormat("yyyyMMdd").format(new Date())).mkdirs();
                f = getRequest().getSession().getServletContext().getRealPath("/")+"file/qs/"+new SimpleDateFormat("yyyyMMdd").format(new Date())+"/"+date+"商編檔案.xlsx";
                OutputStream stream= new FileOutputStream(f);
                wb.write(stream);  
                stream.close();  
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }  
        return f;
        }

模板為:qsMode.xlsx檔案,只有第一列有頭資訊,只寫入第一列的值

相關推薦

SpringMVC實現檔案下載功能檔案匯出功能

1.頁面程式碼 <a class="layui-btn" href="${pageContext.request.contextPath}/bAndWListManage/downloadWhiteListTmp.do" onclick="downloadTempla

實現檔案下載功能SpringMVC

實現檔案的下載功能,下載excel檔案 兩種實現方式 一:下載本地指定路徑下的指定檔案。 前端程式碼: <a id="download1" type="hidden" style='color:red' href='填寫後臺指定coltroller

Android開發中使用FileDownloader來實現檔案下載功能總結一

今天研究了一下Android開發中檔案下載功能,記錄一下。這篇部落格主要介紹第三方下載外掛:FileDownloader的單任務的使用方法,至於多工的後面會做補充記錄,再寫一篇博文。效果圖如下:(虛擬機器連不上網)1、首先是引用方法:implementation 'com.l

TP5的檔案下載功能方法

傳的值對的話可以直接用這個方法(記住不能封裝成model) public function xiazai(Request $request) {     $file_n = Db::name("youxi")->where("uid",$request->pa

Spring Boot入門11實現檔案下載功能

  在這篇部落格中,我們將展示如何在Spring Boot中實現檔案的下載功能。   還是遵循筆者寫部落格的一貫風格,簡單又不失詳細,實用又能讓你學會。   本次建立的Spring Boot專案的主要功能為檔案下載,而且這也是唯一功能,當然,作為例子,要儘可

SpringMVC檔案下載功能附上完整的springmvc檔案上傳下載示例

========================================================== 以下使用maven建立檔案上傳下載 ============================ pom.xml <project xmlns="h

通過base64實現圖片下載功能基於vue

code 不支持 dea methods navi text 完整 瀏覽器支持 stat 1. 使用場景 當我們處理圖片下載功能的時候,如果本地的圖片,那麽是可以通過canvas獲得圖片的base64的,方法如下。但是如果圖片的url存在跨域問題的話,下面的方法將行不通,這

不用寫Windows服務實現定時器功能FluentScheduler

ace 簡單 要去 job macbook sharp 管理 dia 做到 MacBook Pro 只有四個 USB Type-C 接口是否錯了? 一項新技術的誕生總會對已存在的事物造成沖擊或影響,如果大家都害怕沖擊與影響,那這個世界永遠像現在不變就行了,大家都好好的,待

Spring 實現檔案下載功能

方式1: public void download(HttpServletResponse response,@RequestParam(value="params") String params) throws IOException, DocumentException{ response

PHP+MySQL實現留言板功能完整版

由於前段時間過於忙碌,加上小編有重灌了電腦系統,一直沒有去復現這個功能,後面復現過程中,程式碼做了一些調整。今天我將完整版的程式碼和sql檔案程式碼整理出來,供各位學習參考。   1.資料庫SQL檔案 index.php <html> <head>

PHP+MySQL實現留言板功能

上次我們做了登陸註冊頁面的前端設計,這一節我們實現登陸和註冊 結合上次的登陸註冊頁面,這次我們先實現註冊,那麼,我們就要先寫註冊頁面的後端處理程式碼。我們將其命名為:doregister.php  程式碼如下。 <?php require_once "connet.php"; r

PHP+MySQL實現留言板功能

1.登陸註冊頁面前端設計        由於小編第一次寫部落格,加上前端知識還不夠紮實,本文小編著重處理後端,及PHP連線資料庫,實現新增留言,刪除留言功能。話不多說,我們直接上程式碼。   登陸頁面設計:我們將其命名為:in

Spring Boot實現檔案下載功能

我們只需要建立一個控制器(Controler)檔案,即Controller目錄下的File_Download.java,其完整目錄如下: @Controller public class File_Download { //實現Spring Boot 的檔案下載功能,對映網址為/download

Android Webview實現檔案下載功能

                    在做美圖欣賞Android應用的時候,其中有涉及到Android應用下載的功能,這個應用本身其實也比較簡單,就是通過WebView控制呼叫相應的WEB頁面進行展示。剛開始以為和普通的檔案下載實現,只需要一個連結,然後點選就可以實現下載了,可是放到手機上試的時候,點選下載

Unity3D基於陀螺儀實現VR相機功能

轉至https://blog.csdn.net/m0_37998140/article/details/78255978?utm_source=blogxgwz7 Unity自帶陀螺儀功能,今天就利用陀螺儀實現一個VR相機功能。步驟如下:   開啟Unity,建立一個新的

Python3實現搶火車票功能

導語 我們來完成專案的最後一部分內容即將兩項功能整合到一個Demo,供所有專業/非專業人士更加方便地使用。 開發工具 python版本:3.5.4 chromedriver_win32版本:2.3.4 chrome版本:65.0.3298.4 相關模組: req

使用ffmepg實現手機直播功能Android

客戶端的話最主要就是使用ffmpeg。 接下來要講的就是從ffmpeg的編譯開始,到編碼,以及推流,到解碼等過程。 ffmpeg的編譯 懂英文看這裡就行:ubuntu下的編譯指南 ffmpeg的編譯需要linux環境,我這裡使用的是虛擬機器(vmwa

javaWeb實現郵箱驗證功能

上篇寫的實現基本上是一個工具類,並沒封裝成下圖這樣方式(梨視訊註冊介面),現在開始完善上篇的java郵箱啟用驗證功。 java郵箱驗證地址:https://blog.csdn.net/BlackPlus28/article/details/85044068 -----------------

Java後臺實現檔案下載功能

專案中使用的框架是SpringMVC+MyBatis 在專案中需要做一個功能。就是一個報表。然後根據報表生成一個csv格式的檔案。然後進行壓縮。並提供下載功能。 該“Excel下載” 功能的業務邏輯是當點選該按鈕。則需要把報表頁面上顯示的資料進行生成一個

java web Servlet--實現檔案下載功能

先上一段原始碼,這一段檔案下載,是在 Servlet 上面實現的。package util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import j