JFinal上传bug

绿色的小苹果 发布于 2015/12/17 15:49
阅读 352
收藏 0

@JFinal 你好,想跟你请教个问题:jfinal的上传文件多文件上传的时候 第二个文件明明上传不成功 但是还是上传上去了  显示0K或者不是源文件大小  jfinal再上传方面文件流没有读取完不应该上传上去。 还有总是提示java.net.SocketTimeoutException: Read timed out


加载中
0
JFinal
JFinal
   多文件上传时,确保一下 input file 表单域的 name 值不相同,另外如果上传时中断上传,可能也会留下上传不完全的文件,最后具体报什么异常,全面贴出来一下,有助于解决问题
0
绿色的小苹果
绿色的小苹果

引用来自“JFinal”的评论

   多文件上传时,确保一下 input file 表单域的 name 值不相同,另外如果上传时中断上传,可能也会留下上传不完全的文件,最后具体报什么异常,全面贴出来一下,有助于解决问题

用getFiles()这个方法

只能获得一个文件对象

List<UploadFile> files = getFiles(PathKit.getWebRootPath()+"/upload/temp/");

Syso(files.size()); //结果永远是1

for(UploadFile f : files) {
System.out.println("file"+f.getFileName()); // 打印出来时最后一个文件的名字
}
JFinal
JFinal
file.size() 结果为1,看一下 <input type="file" name=这里的值是否有相同的?
0
绿色的小苹果
绿色的小苹果

引用来自“JFinal”的评论

   多文件上传时,确保一下 input file 表单域的 name 值不相同,另外如果上传时中断上传,可能也会留下上传不完全的文件,最后具体报什么异常,全面贴出来一下,有助于解决问题

引用来自“绿色的小苹果”的评论

用getFiles()这个方法

只能获得一个文件对象

List<UploadFile> files = getFiles(PathKit.getWebRootPath()+"/upload/temp/");

Syso(files.size()); //结果永远是1

for(UploadFile f : files) {
System.out.println("file"+f.getFileName()); // 打印出来时最后一个文件的名字
}
具体异常java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out
        at com.jfinal.upload.MultipartRequest.wrapMultipartRequest(MultipartRequest.java:117)
        at com.jfinal.upload.MultipartRequest.<init>(MultipartRequest.java:63)
        at com.jfinal.core.Controller.getFiles(Controller.java:688)
        at com.jfinal.core.Controller.getFile(Controller.java:693)
        at com.bthello.admin.controller.UploadController.up(UploadController.java:63)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.jfinal.aop.Invocation.invoke(Invocation.java:71)
        at com.bthello.Interceptor.LoginInterceptor.intercept(LoginInterceptor.java:15)
        at com.jfinal.aop.Invocation.invoke(Invocation.java:65)
        at com.jfinal.core.ActionHandler.handle(ActionHandler.java:74)
        at com.bthello.Interceptor.HtmlSkipHandler.handle(HtmlSkipHandler.java:13)
        at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
JFinal
JFinal
出现 SocketTimeout 异常,是因为上传文件很大超出了服务端允许的最大范围,设置一下相关参数,参考一下这里:http://zhidao.baidu.com/link?url=ni6gc5tXTznS9Lwpz-vvO6DgI7VU1RXTrTDQBRqLUzGurIGrW0BVX1tafNe04-HddpoDgxsDMw2xByX4YUMWt_
0
小雨0oo
小雨0oo

jfinal不支持同名多文件

可以直接遍历下面这个获取所有文件

com.oreilly.servlet.multipart.MultipartParser parser = new MultipartParser(getRequest(), JFinal.me().getConstants().getMaxPostSize(), false, false, "UTF-8");

0
绿色的小苹果
绿色的小苹果

引用来自“小雨0oo”的评论

jfinal不支持同名多文件

可以直接遍历下面这个获取所有文件

com.oreilly.servlet.multipart.MultipartParser parser = new MultipartParser(getRequest(), JFinal.me().getConstants().getMaxPostSize(), false, false, "UTF-8");

可以获得上传的所有文件?
返回顶部
顶部