前臺代碼: app
選擇附件: 提交 這裏須要注意在form中必須指明編碼格式:enctype="multipart/form-data" 設置表單的mime編碼,默認狀況下這個編碼格式是application/x-www.form-urlencoded,不能用於文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據,該編碼下上傳二進制數據; 注意:在以上這種編碼的狀況下,由於上傳的是二進制數據,因此request是得不到輸入框數據的,咱們能夠經過上傳組件獲取表單中的輸入信息。 後臺代碼: String mHttpUrl=request.getRealPath("")+"\\uploadFiles\\"; int maxSize = 10 * 1024 * 1024; //10M UploadFile upFile = getFile("FILE", mHttpUrl, maxSize, "utf-8"); 在Jfinal中以上三句就已經完成了文件上傳,固然,咱們的前提是在lib中引入cos-26Dec2008.jar包 以上採用getFile方法實現上傳單個文件,還能夠經過getFiles實現批量上傳 以上getFile 參數1是表單file的域名稱 參數2是上傳文件存放的絕對路徑 參數3是文件的最大長度[即文件的大小] 參數4是指定文件編碼 上傳的文件自定名稱保存 修改上傳文件的名稱【目前】本人閱讀開源社區及我的使用有兩種解決方案: 1.在文件進行保存時進行修改文件命名 2.先完成文件上傳再進行重命名 根據本人的實際狀況[俺還不是高手],選擇第二種方案比較靠譜,由於第一種方案須要咱們對Jfinal相關jar包進行自定義或重寫相關方法再打包再使用。 第二種方案實現也就一句話,很方便以下: ...緊接以上的代碼段 File f = upFile.getFile(); f.renameTo(File file); 這樣就實現了對所上傳的文件的重命名,這裏的重命名文件寫法如: new File(mHttpUrl+System.currentTimeMillis()+"."+type); 這裏用的是時間戳命名。type是文件類型:如jpg,doc[這個能夠本身想辦法截取] 注意啦----有個小重點 這裏還有一個關鍵問題就是form中的非file域的值的獲取 Jfinal中咱們獲取表單中的文本域中與url傳遞參數的值至關方便,getpara()就能夠了,可是上面咱們已經說了二進制值這種獲取方式用不上,具體獲取辦法以下: String para= getMultipartRequest().getParameter("para"); 這裏還要注意一點,以上獲取除file類型的文本域之外的字段值時,咱們必須保證文件已經完成保存,即getFile這個方法已經執行。