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


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

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

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

SpringBoot 圖文系列教程技術大綱

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

SpringBoot 圖文教程系列文章目錄

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

前言

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

本文所有的內容,將會在之前的demo上進行操作。
如果沒有寫好的demo,請去Git倉庫下載:https://gitee.com/bingqilinpeishenme/Lu-JavaNodes/t……

文件上傳

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配置文件中

文件下載

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);
    }

總結

恭喜你完成了本章的學習,為你鼓掌!如果本文對你有幫助,請幫忙點贊,評論,轉發,這對作者很重要,謝謝。

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

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

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

下面體貼的我給朋友萌還准備了一些 自測面試題和項目案例,希望你能夠成熱打鐵,將知識夯扎實。

上期自測面試題答案

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

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

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

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

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

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

本次需求:

練習文中demo

求關注,求點贊,求轉發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM