[学习笔记]--Jfinal 表单提交附件

近期。项目里面用到了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();//提交
};

在提交button设置一个 onclick 事件。这样咱们就把前台的表单里面的 A,B,C,D...等參数 咱们就可以提交到后台了!

后台代码:

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; // } } });


这里用的是jquery 表单插件ajaxForm 详细使用方法去百度,我也是赶猪上架。

好吧 继续看 我改进了的后台 部分代码

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>");

有木有发现 这里的renderHtml就相似 以前的 rendJson();

这后面的 代码 有的涉及到了 其它地方 因此我就选了一下 相关的出来,你们可以看看这个思路。写做水平有限。请勿喷~  

相关文章
相关标签/搜索