一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - springboot 單文件上傳的實現步驟

springboot 單文件上傳的實現步驟

2021-08-04 10:17皮卡丘和羊寶貝 Java教程

這篇文章主要介紹了springboot實現單文件上傳的方法,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下

Spring Boot 對文件上傳做了簡化,基本做到了零配置,我們只需要在項目中添加 spring-boot-starter-web 依賴即可。

單文件上傳

1,代碼編寫

(1)首先在 static 目錄中創建一個 upload.html 文件,內容如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <form action="/upload" method="post" enctype="multipart/form-data">
  9. <input type="file" name="uploadFile" value="請選擇文件">
  10. <input type="submit" value="上傳">
  11. </form>
  12. </body>
  13. </html>

(2)接著創建文件上傳處理接口 FileUploadController.java,內容如下:

  1. package com.example.demo;
  2.  
  3. import org.springframework.ui.Model;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.PostMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import org.springframework.web.multipart.MultipartFile;
  8.  
  9. import javax.servlet.http.HttpServletRequest;
  10. import java.io.File;
  11. import java.io.IOException;
  12. import java.text.SimpleDateFormat;
  13. import java.util.Date;
  14. import java.util.UUID;
  15.  
  16. @RestController
  17. public class FileUploadController {
  18.  
  19. SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/");
  20.  
  21. @PostMapping("/upload")
  22. public String upload(MultipartFile uploadFile, HttpServletRequest req) {
  23. // 上傳的文件將保存在項目運行目錄下的 uploadFile 文件夾,
  24. String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");
  25. System.out.println(realPath);
  26.  
  27. // 并且在 uploadFile 文件夾中通過日期對上傳的文件歸類保存
  28. // 比如:/uploadFile/2019/06/06/32091e5f-c9e9-4506-9567-43e724f1fe37.png
  29. String format = sdf.format(new Date());
  30. File folder = new File(realPath + format);
  31. if (!folder.isDirectory()) {
  32. folder.mkdirs();
  33. }
  34.  
  35. // 對上傳的文件重命名,避免文件重名
  36. String oldName = uploadFile.getOriginalFilename();
  37. String newName = UUID.randomUUID().toString()
  38. + oldName.substring(oldName.lastIndexOf("."), oldName.length());
  39. try {
  40. // 文件保存
  41. uploadFile.transferTo(new File(folder, newName));
  42.  
  43. // 返回上傳文件的訪問路徑
  44. String filePath = req.getScheme() + "://" + req.getServerName()
  45. + ":" + req.getServerPort() + "/uploadFile/" + format + newName;
  46. return filePath;
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. }
  50. return "上傳失敗!";
  51. }
  52. }

2,運行測試

(1)我們使用瀏覽器訪問 upload.html 頁面并選擇文件上傳:

springboot 單文件上傳的實現步驟

(2)上傳成功后會返回上傳文件的訪問路徑:

springboot 單文件上傳的實現步驟

附:常用參數配置

(1)如果我們需要對圖片上傳的細節進行配置,也是可以的。比如我們可以在 application.properties 文件中添加如下配置:
我對"spring.servlet.multipart.file-size-threshold"這個參數的理解,由于文件上傳操作,tomcat會默認將上傳的文件保存到系統的臨時文件夾,我們的程序再將文件從臨時文件夾移動到指定的上傳目錄,最后再將臨時文件夾中的文件刪除,那這個參數的含義就是,加入參數值為10mb,那就是當上傳的文件小于10mb時,上傳的文件不經過臨時文件夾直接保存到我們的指定目錄,當文件大小大于10mb時,會先將文件寫入到磁盤的臨時文件夾中,最后再存到我們指定的目錄,這樣的目的就是不至于因為文件內容過大,內存被擠爆,這是個人對這個參數的理解,和為什么需要搞個臨時文件夾,今天太晚了,明天起來再驗證這個吧,另外,文章末尾的文章可以參考下再。

  1. # 是否支持批量上傳 (默認值 true)
  2. spring.servlet.multipart.enabled=true
  3. # 文件大小閾值,當大于這個閾值時將寫入到磁盤,否則存在內存中,(默認值0 一般情況下不用特意修改)
  4. spring.servlet.multipart.file-size-threshold=0
  5. # 上傳文件的臨時目錄 (一般情況下不用特意修改)
  6. spring.servlet.multipart.location=E:\temp
  7. spring.servlet.multipart.max-file-size=1MB
  8. spring.servlet.multipart.max-request-size=10MB
  9. spring.servlet.multipart.resolve-lazily=false

(2)上面幾個參數作用如下:

  • spring.servlet.multipart.enabled:表示是否開啟文件上傳支持,默認為 true
  • spring.servlet.multipart.file-size-threshold:表示文件寫入磁盤的閥值,默認為 0
  • spring.servlet.multipart.location:表示上傳文件的臨時保存位置
  • spring.servlet.multipart.max-file-size:表示上傳的單個文件的最大大小,默認為 1MB
  • spring.servlet.multipart.max-request-size:表示多文件上傳時文件的總大小,默認為 10MB
  • spring.servlet.multipart.resolve-lazily:表示文件是否延遲解析,默認為 false

臨時文件問題原理:http://www.ythuaji.com.cn/article/181161.html

以上就是springboot實現單文件上傳的詳細內容,更多關于springboot 文件上傳的資料請關注我們其它相關文章!

原文鏈接:https://www.cnblogs.com/lovelywcc/p/14350893.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 2021海角社区最新版 | 欧美整片在线 | 日韩精品欧美 | 喜马拉雅听书免费版 | 精品视频中文字幕 | 加勒比一本大道在线 | 成版人快猫永久破解版 | 国产精品亚洲精品青青青 | 国产一级视频久久 | 国产极品精频在线观看 | 精品日韩视频 | 变态 调教 视频 国产九色 | 国产caoni555在线观看 | 福利国模私拍视频在线观看 | 无人知晓小说姜璟免费阅读 | 久久天天躁狠狠躁夜夜躁 | 成人特级毛片69免费观看 | 亚1洲二区三区四区免费 | 手机在线观看国产精选免费 | 日本视频免费在线播放 | 国产成人h视频在线播放网站 | 狠狠草视频 | 法国老妇性xx在线播放 | 惩罚美女妲己的尤老师 | 四虎成人免费 | 美日韩一区二区三区 | 男人天堂久久 | 臀控福利大臀的网站 | 99视频久久 | 欧美成人二区 | 成年美女黄网站色视频大全免费 | youjizzxxx在线观看 | 欧美亚洲视频在线观看 | 成人18在线观看 | 四虎1515hhcom| 三级午夜宅宅伦不卡在线 | 免费人成网址在线观看国内 | 高清在线免费 | 男同巨黄gay小说好爽 | haodiaose在线精品免费观看 | 国产精品免费观在线 |