SpringBoot圖文教程4—SpringBoot 實現文件上傳下載

有天上飛的概念,就要有落地的實現html

  • 概念+代碼實現是本文的特色,教程將涵蓋完整的圖文教程,代碼案例
  • 文章結尾配套自測面試題,學完技術自我測試更紮實
  • 概念十遍不如代碼一遍,朋友,但願你把文中全部的代碼案例都敲一遍

大哥大姐新年好,點贊轉發不要少java

SpringBoot 圖文系列教程技術大綱git

鹿老師的Java筆記鹿老師的Java筆記

SpringBoot 圖文教程系列文章目錄web

  1. SpringBoot圖文教程1「概念+案例 思惟導圖」「基礎篇上」
  2. SpringBoot圖文教程2—日誌的使用「logback」「log4j」
  3. SpringBoot圖文教程3—「‘初戀’情結」集成Jsp

前言

經過前面三篇的教程,小夥伴們已經能夠實現一個web項目了,可是如今項目的功能還有點簡單,接下來的文章中將會逐步完善添加新的功能。面試

本文全部的內容,將會在以前的demo上進行操做。
若是沒有寫好的demo,請去Git倉庫下載:https://gitee.com/bingqilinpeishenme/Lu-JavaNodes/t……apache

文件上傳

1.準備上傳頁面

<form action="路徑...." method="post" enctype="multipart/form-data">
        <input type="file" name="aa">
        <input type="submit" value="上傳">
</form>
<!--
    1. 表單提交方式必須是post
    2. 表單的enctype屬性必須爲multipart/form-data
    3. 後臺接受變量名字要與文件選擇name屬性一致
    4.action寫Controller的方法的路徑
-->

2.編寫控制器

@Controller
@RequestMapping("/file")
public class FileController {
  @RequestMapping("/upload")
  public String upload(MultipartFile aa, HttpServletRequest request) throws IOException {
//獲取upload文件夾的路徑 
        String realPath = request.getRealPath("/upload");
//將上傳的文件寫入 upload文件夾 中
        aa.transferTo(new File(realPath,aa.getOriginalFilename()));//文件上傳
        return "index";
  }
}

3.修改文件上傳大小

#上傳時出現以下異常:  上傳文件的大小超出默認配置  默認10M
nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (38443713) exceeds the configured maximum (10485760)

在application.properties配置文件中tomcat

文件下載

1.提供下載文件連接

<href="../file/download?fileName=corejava.txt">corejava.txt</a>

2.開發控制器

@RequestMapping("/download")
public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws Exception {
//獲取upload文件夾的路徑
        String realPath = request.getRealPath("/upload");
//經過流讀取文件
        FileInputStream is = new FileInputStream(new File(realPath, fileName));
//得到響應流
        ServletOutputStream os = response.getOutputStream();
//設置響應頭信息
        response.setHeader("content-disposition","attachment;fileName="+ URLEncoder.encode(fileName,"UTF-8"));
//經過響應流將文件輸入流讀取到的文件寫出
        IOUtils.copy(is,os);
//關閉流
        IOUtils.closeQuietly(is);
        IOUtils.closeQuietly(os);
    }

總結

恭喜你完成了本章的學習,爲你鼓掌!若是本文對你有幫助,請幫忙點贊,評論,轉發,這對做者很重要,謝謝。app

讓咱們再次回顧本文的學習目標post

  • 掌握SpringBoot中文件上傳和文件下載的使用

要掌握SpringBoot更多的用法,請持續關注本系列教程。學習

下面體貼的我給朋友萌還準備了一些 自測面試題和項目案例,但願你可以成熱打鐵,將知識夯紮實。

上期自測面試題答案

見面試題集錦 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

自測面試題(答案見下期)

  • SpringMvc 文件上傳的步驟
  • SpringMvc 文件下載的步驟

上期自測實現項目小案例答案

見碼雲倉庫 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

自測實現項目小案例(答案見下期)

本次需求:

練習文中demo

求關注,求點贊,求轉發

相關文章
相關標籤/搜索