Jfinal附件上傳與重命名

                    

前臺代碼: 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這個方法已經執行。
相關文章
相關標籤/搜索