前言
日常開發中,大多數專案都會涉及到附件上傳、回顯、下載等功能,本文記錄封裝通用附件管理模組,並與業務模組進行整合實現上傳、回顯、下載
我們之前已經對檔案上傳下載有過記錄,傳送門:基於“formData批量上傳的多種實現” 的多圖片預覽、上傳的多種實現、formData批量上傳的多種實現、自定義input檔案上傳樣式,這裡也是基於之前的寫一個完整例子
技術棧:layui + thymeleaf + springboot
程式碼編寫
專案結構
前端
定義模板
指令碼
後端
Vo類
Controller
測試效果
test.html頁面有兩個測試表單,分別整合附件管理模組,需要引入線上jq、layui依賴,再引入我們的附件管理css、js指令碼
上傳
//表單提交 function submit1() { //呼叫自己的儲存業務 let testFormData = $("#testForm1").serializeObject(); console.log(testFormData); //上傳附件 Attachment.upload("123456"); }
上傳的檔案在AttachmentVo的files陣列中
回顯可編輯
//表單回顯(可編輯) function showForm1() { //回顯基礎資料 $("#testForm1").form({username:"張三",age:18}); //回顯附件 Attachment.showDndEditAttachments("123456"); }
重新編輯時,刪掉的附件在AttachmentVo的deletes陣列中,新上傳的附件在files陣列中
回顯不可編輯
//表單回顯(不可編輯) function showForm2() { //回顯基礎資料 $("#testForm2").form({username:"李四",age:81}); //禁用表單、以及隱藏按鈕 $("#testForm2 input").prop("disabled", true); $("#button21").remove(); $("#button22").remove(); //回顯附件 Attachment.showDndDownloadAttachments("7890"); }
不可編輯的回顯中,可以進行下載附件操作
下載
後記
不同的業務表單再也不用自己維護附件,直接引入我們通用的附件管理模組,快速實現功能、風格統一
程式碼開源
程式碼已經開源、託管到我的GitHub、碼雲: