4
回答
文件上传,使用表单提交,在后台判断大小,超过规定大小给前段返回信息
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

@JFinal 你好,想跟你请教个问题:

页面采用表单提交方式。目的在后端判断提交的文件大小是否超过10M,如果超过给原来的页面返回提示信息,请问怎么实现毕竟好,或在下面的controller里如何修改。

controller  

 try{
files = getFiles(filePath,
((Integer) PropertiesPlugin
.getParamMapValue(DictKeys.config_maxPostSize_key))
.intValue(), ToolString.encoding);
}catch(Exception e){
Map<String, Object> json = new HashMap<String, Object>();
json.put("info", "error");
renderJson(json);
return ;   // 这里如何终止方法执行 不运行~~~处代码
}
~~~~~~

举报
romeo2015
发帖于2年前 4回/307阅
共有4个答案 最后回答: 2年前

终于发现问题根本原因,获取文件大小可以用request,顺利实现后台检测文件大小。

Map<String, Object> json = new HashMap<String, Object>();
		int size = getRequest().getContentLength();
        int filesize = (Integer) PropertiesPlugin.getParamMapValue(DictKeys.config_maxPostSize_key);
		List<UploadFile> files = new ArrayList<UploadFile>();
        if(size >filesize){
        	json.put("info", "上传的文件大小超过"+filesize/(1024*1024)+"M。");
			json.put("status", "1");
			renderJson(json);
			return;
        }



--- 共有 1 条评论 ---
JFinal在请求开始处就判断长度,这个应该是最好的方案,感谢回来分享 2年前 回复
   这样处理就挺好,在 catch 中 renderJson 到客户端,并且 return 即可
--- 共有 4 条评论 ---
romeo2015回复 @romeo2015 : data.info 2年前 回复
romeo2015回复 @JFinal : error: function(data) { alert(dat.info); 这样应该是和后台对应的吧. error function 我不怎么清楚 用的少,以前返回值都是在success里调用的。 2年前 回复
JFinal回复 @romeo2015 : 进入 error 方法,这个方法的参数值是什么? 2年前 回复
romeo2015现在出了异常前端进入error方法 并且json值获取不到,有没有办法改进下try里面判断大小的方法,不报异常,使得前端能获取数据 2年前 回复
$("#applyCommitfoForm").ajaxSubmit({
   cache: false,
       success:  function (data) {
       if(data != ""){
       $('#content').html(data);
    }
       $('#loading').remove();
       $('#content').fadeIn();
       docReady();
   },
   error: function(data) {
    //希望在这里获取data的值
       alert("提交失败,请检测文件大小是否小于100M!");
       $('#loading').remove();
       $('#content').fadeIn();
       docReady();
   }
   });

引用来自“romeo2015”的评论

$("#applyCommitfoForm").ajaxSubmit({
   cache: false,
       success:  function (data) {
       if(data != ""){
       $('#content').html(data);
    }
       $('#loading').remove();
       $('#content').fadeIn();
       docReady();
   },
   error: function(data) {
    //希望在这里获取data的值
       alert("提交失败,请检测文件大小是否小于100M!");
       $('#loading').remove();
       $('#content').fadeIn();
       docReady();
   }
   });

    是否在 error:function(data) 中获取到了值,如果获取不到,试试在后端的 catch 块中先 getResponse.setStatus(500),然后再 renderJson。

    前端是通过返回的状态来决定是否回调error:function(data) 方法的,如果状态是 200,则会回调 success:function(data) 。

顶部