W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
WebMVC模塊針對文件的上傳處理以及對上傳的文件操作都非常的簡單,通過注解就輕松搞定:
@FileUpload:聲明控制器方法需要處理上傳的文件流;
無參數(shù),需要注意的是文件上傳處理的表單enctype屬性:
<form action="/demo/upload" method="POST" enctype="multipart/form-data"> ...... </form>
IUploadFileWrapper:上傳文件包裝器接口,提供對已上傳文件操作的一系列方法;
示例代碼:
@Controller @RequestMapping("/demo) public class UploadController { // 處理單文件上傳 @RequestMapping(value = "/upload", method = Type.HttpMethod.POST) @FileUpload public IView doUpload(@RequestParam IUploadFileWrapper file) throws Exception { // 獲取文件名稱 file.getName(); // 獲取文件大小 file.getSize(); // 獲取完整的文件名及路徑 file.getPath(); // 獲取文件Content-Type file.getContentType(); // 轉(zhuǎn)移文件 file.transferTo(new File("/temp", file.getName())); // 保存文件 file.writeTo(new File("/temp", file.getName()); // 刪除文件 file.delete(); // 獲取文件輸入流對象 file.getInputStream(); // 獲取文件輸出流對象 file.getOutputStream(); return View.nullView(); } // 處理多文件上傳 @RequestMapping(value = "/uploads", method = Type.HttpMethod.POST) @FileUpload public IView doUpload(@RequestParam IUploadFileWrapper[] files) throws Exception { // ...... return View.nullView(); } }
文件上傳相關(guān)配置參數(shù):
#------------------------------------- # 文件上傳配置參數(shù) #------------------------------------- # 文件上傳臨時目錄,為空則默認(rèn)使用:System.getProperty("java.io.tmpdir") ymp.configs.webmvc.upload_temp_dir= # 上傳文件大小最大值(字節(jié)),默認(rèn)值:-1(注:10485760 = 10M) ymp.configs.webmvc.upload_file_size_max= # 上傳文件總量大小最大值(字節(jié)), 默認(rèn)值:-1(注:10485760 = 10M) ymp.configs.webmvc.upload_total_size_max= # 內(nèi)存緩沖區(qū)的大小,默認(rèn)值: 10240字節(jié)(=10K),即如果文件大于10K,將使用臨時文件緩存上傳文件 ymp.configs.webmvc.upload_size_threshold= # 文件上傳狀態(tài)監(jiān)聽器,可選參數(shù),默認(rèn)值為空 ymp.configs.webmvc.upload_file_listener_class=
文件上傳狀態(tài)監(jiān)聽器(upload_file_listener_class)配置:
WebMVC模塊的文件上傳是基于Apache Commons FileUpload組件實現(xiàn)的,所以通過其自身提供的ProgressListener接口即可實現(xiàn)對文件上傳狀態(tài)的監(jiān)聽;
示例代碼:實現(xiàn)上傳文件的進(jìn)度計算;
public class UploadProgressListener implements ProgressListener { public void update(long pBytesRead, long pContentLength, int pItems) { if (pContentLength == 0) { return; } // 計算上傳進(jìn)度百分比 double percent = (double) pBytesRead / (double) pContentLength; // 將百分比存儲在用戶會話中 WebContext.getContext().getSession().put("upload_progress", percent); } }
將該接口實現(xiàn)類配置到 ymp.configs.webmvc.upload_file_listener_class 參數(shù)中;
通過Ajax定時輪循的方式獲取會話中的進(jìn)度值,并展示在頁面中;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: