需求
完成用户文件上传
1:将上传的文件统一放置到upload的文件夹下
2:将每天上传的文件,使用日期格式的文件夹分开,将每个业务的模块放置统一文件夹下
3:上传的文件名要指定唯一,可以使用UUID的方式,也可以使用日期作为文件名
4:封装一个文件上传的方法,该方法可以支持多文件的上传,即支持各种格式文件的上传
5:保存路径path的时候,使用相对路径进行保存,这样便于项目的可移植性
实现步骤
1.在util包下封装一个方法
public class FileUtils { /** * @Name: fileUploadReturnPath * @Description: 文件上传,返回panth路径 * @Parameters: file:上传文件 * fileName:上传文件名 * model:模块名称 * @Return: String:返回上传路径 * 1:完成文件上传的要求 1:将上传的文件统一放置到upload的文件夹下 2:将每天上传的文件,使用日期格式的文件夹分开,将每个业务的模块放置统一文件夹下 3:上传的文件名要指定唯一,可以使用UUID的方式,也可以使用日期作为文件名 4:封装一个文件上传的方法,该方法可以支持多文件的上传,即支持各种格式文件的上传 5:保存路径path的时候,使用相对路径进行保存,这样便于项目的可移植性*/public static String fileUploadReturnPath(File file, String fileName, String model) {//1.获取upload文件夹路径String basePath = ServletActionContext.getServletContext().getRealPath("/upload");//2.获取日期格式的文件夹(格式yyyy/MM/dd/)String datePath=DateUtils.dateToStringByFile(new Date());//3.全路径格式(例如:upload\2017\7\8\用户管理)String filePath=basePath+datePath+model;//4.判断该文件夹是否存在,若不存在,创建File dateFile = new File(filePath);if(!dateFile.exists()){ dateFile.mkdirs(); }//5.指定对应文件名//获取文件名后缀String suffix = fileName.substring(fileName.lastIndexOf("."));//设置文件名为uuidString uuidFileName = UUID.randomUUID().toString()+suffix;//目标文件File destFile = new File(dateFile,uuidFileName);//上传文件 file.renameTo(destFile);return "/upload"+datePath+model+"/"+uuidFileName; } }
2.jsp页面的表单要求
当导入struts2的jar包时,struts2会默认支持使用fileupload工具上传文件
设置表单属性: enctype=multipart/form-data 表单类型
method=post 提交方式
name=uploads 文件域名称
3.VO对象中添加非持久化javabean属性
//上传文件private File[] uploads;//上传文件名,该变量的定义必须是上传表单file字段name属性值+FileNameprivate String[] uploadsFileName;//上传文件类型,该变量的定义必须是上传表单file字段name属性值+ContentTypeprivate String[] uploadsContentType; public File[] getUploads() {return uploads; }public void setUploads(File[] uploads) {this.uploads = uploads; }public String[] getUploadsFileName() {return uploadsFileName; }public void setUploadsFileName(String[] uploadFileName) {this.uploadsFileName = uploadFileName; }public String[] getUploadsContentType() {return uploadsContentType; }public void setUploadsContentType(String[] uploadContentType) {this.uploadsContentType = uploadContentType; }
4.Service中添加方法
在用户service实现类中添加附件保存的方法saveUserFile(),并在上篇讲到的saveUser()方法中进行调用
/** * 遍历多个附件,组织附件的PO对象,完成文件上传,保存用户的附件(多条数据),建立附件表和用户表的关联关系 * @param elecUser */private void saveUserFiles(ElecUser elecUser) { Date date = new Date();//获取上传的文件File[] files = elecUser.getUploads();//获取文件名String[] fileNames = elecUser.getUploadsFileName();//获取文件类型String[] contentType = elecUser.getUploadsContentType();//遍历if(files!=null&&files.length>0){for(int i=0;i<files.length></files.length>
5.struts2上传文件大小限制
struts2默认可以上传的文件最大限制是2M,如果上传文件大小超过2M,控制台错误如下:
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (77817949) exceeds the configured maximum (2097152)
该异常信息是common-fileupload组件输出的,而非是Struts2框架
解决办法:在struts.xml中设置上传组件的文件大小限制
<!-- 设置最大上传的大小是80M --><constant></constant>
以上是用戶管理中的文件上傳功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版