spring boot 文件上傳

1.編寫文件上傳的表單頁面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>動態添加文件上傳列表</title><link th:href="@{/login/css/bootstrap.min.css}" rel="stylesheet"><script th:src="@{/login/js/jquery.min.js}"></script>
</head>
<body><div th:if="${uploadStatus}" style="color: red" th:text="${uploadStatus}">上傳成功</div><form th:action="@{/uploadFile}" method="post" enctype="multipart/form-data">上傳文件:??<input type="button" value="添加文件" onclick="add()"/><div id="file" style="margin-top: 10px;" th:value="文件上傳區域"></div><input id="submit" type="submit" value="上傳"style="display: none;margin-top: 10px;"/></form><script type="text/javascript">// 動態添加上傳按鈕function add(){var innerdiv = "<div>";innerdiv += "<input type='file' name='fileUpload' required='required'>" +
"<input type='button' value='刪除' onclick='remove(this)'>";innerdiv +="</div>";$("#file").append(innerdiv);// 打開上傳按鈕$("#submit").css("display","block");}// 刪除當前行<div>function remove(obj) {$(obj).parent().remove();if($("#file div").length ==0){$("#submit").css("display","none");}}</script>
</body>
</html>

2.引入jQuery

3.在全局配置文件中添加文件上傳的相關配置

# 單個上傳文件大小限制(默認1MB)
spring.servlet.multipart.max-file-size=10MB
# 總上傳文件大小限制(默認10MB)
spring.servlet.multipart.max-request-size=50MB

4.進行文件上傳處理實現文件上傳功能

//toUpload()方法處理路徑為“/toUpload”的GET請求,向文件上傳頁面//upload.html跳轉;
@GetMapping("/toUpload")
public String toUpload(){return "upload";}

/*uploadFile()方法處理路徑為“/uploadFile”的POST請求,對上傳文件進行處理。文件上傳處理過程中,對文件名進行重命名并存放在“F:/file/”目錄下,并封裝了返回結果。其中,處理上傳文件的請求方法中,使用了“MultipartFile[] fileUpload”參數處理單個或多個上傳文件(也可以使用單列集合參數),fileUpload參數名必須與upload.html頁面中上傳文件<input>框中的name屬性值一致。*/

    @PostMapping("/uploadFile")public String uploadFile(MultipartFile[] fileUpload, Model model) {// 默認文件上傳成功,并返回狀態信息model.addAttribute("uploadStatus", "上傳成功!");for (MultipartFile file : fileUpload) {// 獲取文件名以及后綴名String fileName = file.getOriginalFilename();// 重新生成文件名(根據具體情況生成對應文件名)fileName = UUID.randomUUID()+"_"+fileName;// 指定上傳文件本地存儲目錄,不存在需要提前創建String dirPath = "F:/file/";File filePath = new File(dirPath);if(!filePath.exists()){filePath.mkdirs();}try {file.transferTo(new File(dirPath+fileName));} catch (Exception e) {e.printStackTrace();// 上傳失敗,返回失敗信息model.addAttribute("uploadStatus","上傳失敗: "+e.getMessage());}}// 攜帶上傳狀態信息回調到文件上傳頁面return "upload";}

5.效果測試

  • 在瀏覽器上訪問http://localhost:8080/toUpload,效果如下:

如果不能正常解析模板頁面,那么

a.添加NekoHTML依賴(一個簡單地HTML掃描器和標簽補償器)

<dependency>

<groupId>net.sourceforge.nekohtml</groupId>

<artifactId>nekohtml</artifactId>

<version>1.9.22</version>

</dependency>

b.在全局配置文件上添加如下配置

#thymeleaf對html的標簽約束非常嚴格,所有的標簽必須有開有閉,比如#<br></br>或者<br/>是可以的,但是<br>會報錯,配置#spring.thymeleaf.mode=LEGACYHTML5 目的就是為了解決這個問題,可以使頁面#松校驗。

spring.thymeleaf.mode=LEGACYHTML5

  • 點擊【添加文件】,添加幾個文件

  • 驗證文件上傳處理效果,查看定制的上傳文件存儲目錄“F:/file/”

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77724.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77724.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77724.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習核心算法全解析:從基礎到進階的 18 大算法模型

在機器學習領域&#xff0c;算法模型是解決實際問題的核心工具。 不同的算法適用于不同的數據場景和任務需求&#xff0c;理解它們的原理與應用是掌握機器學習的關鍵。 以下將詳細解析 18 個核心算法模型&#xff0c;涵蓋監督學習、無監督學習、集成學習和深度學習等多個領域…

5G網絡切片:精準分配資源,提升網絡效率的關鍵技術

5G網絡切片&#xff1a;精準分配資源&#xff0c;提升網絡效率的關鍵技術 隨著5G技術的廣泛應用&#xff0c;網絡切片&#xff08;Network Slicing&#xff09;作為其核心創新之一&#xff0c;正在改變傳統網絡架構。它通過將物理網絡劃分為多個邏輯網絡&#xff08;切片&…

Spring Boot中Excel處理完全指南

文章目錄 1. Excel處理基礎知識1.1 為什么需要在應用中處理Excel文件&#xff1f;1.2 Java中的Excel處理庫介紹1.2.1 Apache POI1.2.2 EasyExcel1.2.3 JExcel1.2.4 Apache POI SXSSF 1.3 Spring Boot中集成Excel處理 2. 在Spring Boot中集成Excel處理庫2.1 集成Apache POI2.1.1…

Elasticsearch 8.18 中提供了原生連接 (Native Joins)

作者&#xff1a;來自 Elastic Costin Leau 探索 LOOKUP JOIN&#xff0c;這是一條在 Elasticsearch 8.18 的技術預覽中提供的新 ES|QL 命令。 很高興宣布 LOOKUP JOIN —— 這是一條在 Elasticsearch 8.18 的技術預覽中提供的新 ES|QL 命令&#xff0c;旨在執行左 joins 以進行…

2025年滲透測試面試題總結-拷打題庫03(題目+回答)

網絡安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 2025年滲透測試面試題總結-拷打題庫03 一、Windows與Linux系統提權思路 Windows提權 Linux提權 二、…

【華為】OSPF震蕩引起CPU占用率高怎么解決?

原創&#xff1a;廈門微思網絡 現象描述 如圖所示&#xff0c;Switch_1、Switch_2、Switch_3和Switch_4配置了OSPF協議&#xff0c;發現Switch_1設備的CPU占用率高&#xff0c;ROUT任務占用率明顯高于其他任務并且產生路由震蕩。 故障組網圖 原因分析 網絡中IP地址沖突導致…

Everything 安裝教程與使用教程(附安裝包)

文章目錄 前言一、Everything 介紹二、Everything 安裝教程1.Everything 安裝包下載2.選擇安裝文件3.選擇安裝語言4.接受許可協議5.選擇安裝位置6.配置安裝選項7.完成安裝 三、Everything 使用教程1.啟動軟件2.簡單關鍵詞搜索3.按類型搜索 前言 在日常使用電腦時&#xff0c;隨…

極狐GitLab CI/CD 流水線計算分鐘數如何管理?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 計算分鐘管理 (PREMIUM SELF) 在極狐GitLab 16.1 中&#xff0c;從 CI/CD 分鐘數重命名為計算配額或計算分鐘數。 管理員可…

Containerd 1.7.2 離線安裝與配置全指南(生產級優化)

Containerd 1.7.2 離線安裝與配置全指南&#xff08;生產級優化&#xff09; 摘要&#xff1a;本文詳細講解在無外網環境下部署 Containerd 1.7.2 容器運行時的完整流程&#xff0c;涵蓋二進制包安裝、私有鏡像倉庫配置、Systemd服務集成等關鍵步驟&#xff0c;并提供生產環境…

33-公交車司機管理系統

技術&#xff1a; 基于 B/S 架構 SpringBootMySQLvueelementui 環境&#xff1a; Idea mysql maven jdk1.8 node 用戶端功能 1.首頁:展示車輛信息及車輛位置和線路信息 2.模塊:車輛信息及車輛位置和線路信息 3.公告、論壇 4.在線留言 5.個人中心:修改個人信息 司機端功能…

基于 OpenCV 的圖像與視頻處理

基于 OpenCV 的圖像處理 一、實驗背景 OpenCV 是一個開源的計算機視覺庫&#xff0c;廣泛應用于圖像處理、視頻分析、目標檢測等領域。通過學習 OpenCV&#xff0c;可以快速實現圖像和視頻的處理功能&#xff0c;為復雜的應用開發 奠定基礎。本實驗旨在通過實際代碼示例&…

Linux 常用指令用戶手冊

Linux 常用指令用戶手冊 適合新手入門 & 日常速查 目錄 基礎操作文件與目錄管理權限與所有權文本處理壓縮與解壓系統監控網絡操作進程管理實用小技巧 1. 基礎操作 1.1 查看系統信息 # 查看內核版本 uname -a# 查看系統發行版信息&#xff08;適用于 Debian/Ubuntu&…

長效IP與短效IP:如何選擇適合業務的代理類型

在當今數據驅動的互聯網環境中&#xff0c;代理IP已成為企業運營、數據采集和網絡安全的關鍵工具。其中長效IP與短效IP作為兩種主流代理類型&#xff0c;因特性差異被應用于不同場景。本文將深入解析二者的區別&#xff0c;并提供實際場景中的選擇建議。 一、長效IP與短效IP&a…

數據結構|排序算法(三)選擇排序 堆排序 歸并排序

一、選擇排序 1.算法思想 選擇排序&#xff08;Selection Sort&#xff09;是一種簡單直觀的排序算法&#xff0c;其基本思想是&#xff1a;每次都從待排序部分中選出最小的一個數據和待排序的第一個數據交換。 將待排序序列分為已排序和未排序兩部分&#xff0c;初始時已排…

Vue3 + TypeScript,關于item[key]的報錯處理方法

處理方法1&#xff1a;// ts-ignore 注釋忽略報錯 處理方法2&#xff1a;item 設置為 any 類型

8.觀察者模式:思考與解讀

原文地址:觀察者模式&#xff1a;思考與解讀 更多內容請關注&#xff1a;7.深入思考與解讀設計模式 引言 在開發軟件時&#xff0c;系統的某些狀態可能會發生變化&#xff0c;而你希望這些變化能夠自動通知到依賴它們的其他模塊。你是否曾經遇到過&#xff0c;系統中某個對象…

【HD-RK3576-PI】Ubuntu桌面多顯、旋轉以及更新Logo

硬件&#xff1a;HD-RK3576-PI 軟件&#xff1a;Linux6.1Ubuntu22.04 在基于HD-RK3576-PI硬件平臺運行Ubuntu 22系統的開發過程中&#xff0c;屏幕方向調整是提升人機交互體驗的關鍵環節。然而&#xff0c;由于涉及uboot引導階段、內核啟動界面、桌面環境顯示全流程適配&#x…

Rsync+sersync2實現目錄實時同步

Sersync rsync 實現實時同步服務 sersync2二進制包目錄規劃 /app/tools/sersync/ /app/tools/sersync/bin /app/tools/sersync/conf項目架構是這樣的&#xff1a; ------------------- ------------------- ------------------- | | …

MySQL視圖高級應用與最佳實踐

1. 視圖與索引的協同優化?? ??物化視圖&#xff08;模擬實現&#xff09;?? MySQL原生不支持物化視圖&#xff0c;但可通過“定時刷新”的物理表模擬&#xff1a; -- 1. 創建存儲結果的物理表 CREATE TABLE cached_monthly_sales (product_id INT,total_sales DECIMAL(10…

string的模擬實現 (6)

目錄 1.string.h 2.string.cpp 3.test.cpp 4.一些注意點 本篇博客就學習下如何模擬實現簡易版的string類&#xff0c;學好string類后面學習其他容器也會更輕松些。 代碼實現如下&#xff1a; 1.string.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include <…