NutzCN Logo
精华 nutz上传问题
发布于 2942天前 作者 哎呦哥哥 2123 次浏览 复制 上一个帖子 下一个帖子
标签:

注解里有102400,并且有这句 if (err != null && err.getAdaptorErr() != null)
跟着nutzbook来的
上传大小超过注解里设置的,为什么出异常了

org.nutz.mvc.upload.UploadOutOfSizeException: File '0001-3.jpg' out of size!
	at org.nutz.mvc.upload.FastUploading.parse(FastUploading.java:171)
	at org.nutz.mvc.upload.UploadAdaptor.getReferObject(UploadAdaptor.java:189)
	at org.nutz.mvc.upload.UploadAdaptor.getReferObject(UploadAdaptor.java:65)
	at org.nutz.mvc.adaptor.AbstractAdaptor.adapt(AbstractAdaptor.java:225)
	at org.nutz.mvc.upload.UploadAdaptor.adapt(UploadAdaptor.java:120)
	at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:28)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at edu.taru.mvc.LogTimeProcessor.process(LogTimeProcessor.java:27)
	at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
	at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
	at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
	at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:196)
	at edu.taru.mvc.ProjectNutFilter.doFilter(ProjectNutFilter.java:43)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
19 回复

在后台比较一下文件大小也可以,疑问的是为什么没走这里 if (err != null && err.getAdaptorErr() != null)

贴完整方法声明

@wendal

    @At("/front/uploadUserAvatar")
	@Ok("redirect:/front/myCenterForm?userId=${obj.id }") //防止表单重复提交,应该重定向
	@AdaptBy(type = UploadAdaptor.class, args = { Constants.UPLOAD_AVATAR_URI_TEMP, 
												   Constants.DATA_BUFFER_SIZE, 
												   Constants.UTF_8, 
												   Constants.TEMP_FILE_SIZE_MAX, 
												   Constants.IMAGE_SIZE_MAX} )
	public Object uploadUserAvatar (@Param("id") String id, @Param("avatar") TempFile tf, 
			AdaptorErrorContext err, HttpServletRequest request, HttpSession session) {
		String msg = null;
        if (err != null && err.getAdaptorErr() != null) {
            msg = Constants.FILE_SIZE_INVALID;
        } else if (tf == null) {
            msg = Constants.EMPTY_FILE;
        } else {
        	ServletContext servletContext = request.getSession().getServletContext();
        	@SuppressWarnings("deprecation")
			boolean flag1 = Files.copy(tf.getFile(), new File(servletContext.getRealPath("/") 
        			+ Constants.UPLOAD_AVATAR_URI + id + Constants.IMAGE_UPLOAD_PNG));
        	if(flag1) {
        		User user = userService.get(User.class, id);
        		user.setAvatar(id + Constants.IMAGE_UPLOAD_PNG);//设置头像
        		session.setAttribute("user", user); //更新session
        		boolean flag2 = userService.update(user);
        		if(flag1 && flag2) 
        			msg = Constants.IMAGE_UPLOAD_SUCCESS; //上传成功,刷新页面
        	} 
        	else msg = Constants.IMAGE_UPLOAD_FAILE;
        }
        if (msg != null)
            Mvcs.getHttpSession().setAttribute("uploadAvatarMsg", msg);
        return (User)session.getAttribute("user");
	}

@qq_999005dc err参数必须放在最后面

@wendal

public Object uploadUserAvatar (@Param("id") String id, @Param("avatar") TempFile tf,  HttpServletRequest request, HttpSession session, AdaptorErrorContext err){

} 

是这个意思吗,这样不行的

@wendal
if (null != err && null != err.getAdaptorErr())
也是不行

@qq_999005dc debug看有无进入口方法

断点打在 public Object uploadUserAvatar(){}
可以进debug,同时也会报错

@wendal
断点打在 public Object uploadUserAvatar(){}
可以进debug,同时也会报错

@qq_999005dc 报错是肯定的,总会打印一下异常。 那现在的问题就是err是否为null了

@qq_999005dc 看着截图没错误呢,err不为null,适配器错误也不为null了,检查你自己代码吧

@wendal
感觉启发很大,在这里学了不少啊,哈哈
原因找到了,错误在最后的return,空指针了,之前一直看见的是先出的异常,后面还有个空指针的异常没注意
问您一个问题:

        User user = (User) Mvcs.getHttpSession().getAttribute("user");
        //User user2 = (User) session.getAttribute("user");
        return user;

这里为什么 user2 是空指针呢?

适配器报错的话,其他参数都会是null

对了,nutz ios 不能回复,顶部会有 request fail : f.... 403 貌似
每次进app 也是403的一个小标签弹一下,就在那个霸气的启动画面上

@wendal
了解了,谢谢大神

@qq_999005dc 重新扫一下二维码

添加回复
请先登陆
回到顶部