近期。項目裏面用到了Jfinal 裏面的上傳附件。html
Jfinal 的Controller 裏面提供了一個 getFile系列方法提供文件上傳。java
我這裏呢,是文件上傳和表單參數一塊兒提交。jquery
頁面相似下圖:ajax
這裏form表單裏面使用了 enctype="multipart/form-data" 。ui
先看看Jfinal手冊的說明吧!你們看了就知道了this
而後還有個問題 假設是表單提交 還不可以用ajax 提交,詳細的緣由呢也找到了 http://www.oschina.net/question/941098_93842 url
這個就是爲何不可以使用ajax 提交了的緣由。spa
而後咱們可以在頁面裏面 這樣提交.net
方法一:插件
function tosave(){ var data = $("#表單id").serialize(); $("#<span style="font-family: Arial, Helvetica, sans-serif;">表單id</span>").attr("action","equipment/saveOrUpdate?"+data);//跳到指定的contronller $("#表單id").submit();//提交 };
後臺代碼:
UploadFile file = getFile("filedata", path, 200 * 1024 * 1024, "UTF-8");//上傳文件 並且獲取表單參數
但是這裏咱們沒有返回值,或許你可以說你可以重定向或是轉發啊。
額,我僅僅想說我這裏的需求就是提示保存成功。並且刷新列表頁面,或是提示保存失敗,
也相同要刷新頁面。
so ..我就找了另一種方法提交
$('#表單id').ajaxForm({ target:'#output1', iframe:true, url : 'abc/saveOrUpdate', beforeSubmit: function (){ var filename = $("input[name='filedata']").val(); // alert($("#equ_no").val()); // alert(filename); // if(filename.EndWith(".png") || filename.EndWith(".jpg") // || filename.EndWith(".jpeg")|| filename.EndWith(".ico")){ // return window.confirm("肯定要處理此文件嗎?"); // }else{ // alert("請上傳圖片文件!"); // return false; // } } });
好吧 繼續看 我改進了的後臺 部分代碼
String message = "操做錯誤"; String result = Setting.OPTION_FAILUE;
<span style="font-family: Arial, Helvetica, sans-serif;">UploadFile file = getFile("filedata", path, 200 * 1024 * 1024, "UTF-8");//上傳文件 並且獲取表單參數</span>
this.setAttr("result", result); this.setAttr("message", message); this.renderHtml("<script>parent.showResponse('"+result+"','"+message+"')</script>");
這後面的 代碼 有的涉及到了 其它地方 因此我就選了一下 相關的出來,你們可以看看這個思路。寫做水平有限。請勿噴~