jfinal和AjaxFileUpload的问题

圣杰是也 发布于 2014/07/01 09:09
阅读 3K+
收藏 0

Jfinal 以及各位oscer们,请问个问题,今天处理上传头像问题,以前用的ajaxSubmit上传图片,现在想换成AjaxFileUpload上传, 前台代码如下:

html:

<input type="file" class="myfiles" id="headPic" name="Filedata" onchange="img_check(this,'http://localhost:8080/uploadHeadPic','headPic');" title="支持jpg、jpeg、gif、png格式,文件小于5M" value="">



js代码:

$.ajaxFileUpload ({
			url: action_url,
			secureuri:false,
			fileElementId:id,
			data:{headPic:obj.val()},
			dataType: 'json',
			success: function (result,status) {
				if(result.success){	
					var url=result.fileName;
					alert(url);
					
				}
				else{	
					errorTips("上传失败,请重新上传","上传头像");
					
				}
			},
			error:function(result,status,e){
				alert(status);
			}
		})//end of ajax



后台jfinal代码:

/**
	 * 上传头像
	 */
	public void uploadHeadPic(){
		String folder = "/upload/avatars/user/"+ "1" + "/";
		int maxfile = 5 * 1024 * 1024;
		UploadFile uf = getFile("Filedata",".." + folder, maxfile, "UTF-8");
		String fileName = folder + uf.getFileName();
		setAttr("fileName", fileName);
		setMsg("success");
		render(new JsonRender().forIE());
	}



但是我用这种方式的话,每次都会调用js中的error。 调试代码也没有错误信息,页面console也没有错误信息。。

求教,该怎么改?

加载中
1
JFinal
JFinal
setMsg(" success"); 做了什么事情? 前端 js 有对 success 变量的一个判断,是否要改成 setAttr(" success", true);  
圣杰是也
圣杰是也
回复 @JFinal : 现在没有指定,上传后提示我Resource interpreted as Document but transferred with MIME type application/json 虽然提示,但是没有影响程序得执行,图片也上传了。
圣杰是也
圣杰是也
回复 @JFinal : 好的,从目前情况来看,我上传时Input没有在form中,所有没有指定enctype="multipart/form-data" 以前用ajaxSubmit时指定了。
JFinal
JFinal
回复 @圣杰是也 : 这两种方式只有 content type 设置不一样,其它的代码完全一样,所以forIE 应该是可以的,期待你确认后给我个反馈
圣杰是也
圣杰是也
刚才修改了下render,原来forIE得方法好像优点问题,现在换成了RenderJson ,可以实现上传了。。。。
JFinal
JFinal
回复 @圣杰是也 : 在 js 中输出一下 success 的值到底是多少,注意别忘了 control + F5 刷新,以免浏览器缓存 js 文件
下一页
0
圣杰是也
圣杰是也

@Jfinal 看我java代码部分得UploadFile uf = getFile("Filedata",".." + folder, maxfile, "UTF-8"); 

其中我在windows平台用得很好,但是现在在osx平台上,取到得地址有问题,变成了什么 C://.....

圣杰是也
圣杰是也
这个可以忽略,因为配置的saveuploaddir的问题, 以前用ngnix,忘记修改了.
0
Hoonng
Hoonng

我这样写的

         setAttr("success", true);  
        setAttr("configPath", myName.substring(contextPath.length(), myName.length()));
        render(new JsonRender().forIE());

js代码:

success: function (result,status) {
            if(result.success){
                var url=result.configPath;
                $('#configPath').removeAttr("readonly"); 
                $('#configPath').val(url);
                $('#configPath').attr({readonly:'true'});
                closeImportWin();
            }else{  
            $.messager.alert('系统提示', "上传失败,请重新上传", 'warning');
            }
        },
        error:function(result,status,e){
        tishi = "内部错误,请联系管理员!";
        $.messager.alert('系统提示',tishi,'error');
        }

貌似这样就可以了。。。我自己是这样写的,仅供参考!


圣杰是也
圣杰是也
嗯,非常感谢评论.
0
铂金蛋蛋
铂金蛋蛋

看看服务器端回传的信息里 有没有『<pre>』标签。


返回顶部
顶部