JFinal在上传大文件问题

空城难入 发布于 2015/06/10 15:17
阅读 909
收藏 0

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

JFinal在上传大文件(1g以上)文件时,百分之10的概率可以成功,大多数情况是点击上传后不走controller,而是直接redirect到上传表单页面。请指点……

// 设置上传文件大小限制
me.setMaxPostSize(200*Const.DEFAULT_MAX_POST_SIZE);

UploadFile file = getFile("uploadfile");

加载中
0
JFinal
JFinal

这种情况应该只发生在使用 tomcat 的时候,tomcat 有个 bug,假定如下条件:

1:WebRoot 下有个目录名称 upload

2:假定访问上传文件的 action 的 url 是 "/upload"

    当以上两个条件同时出现,上传文件时发送 POST 请求到 "/upload" 会被 tomcat 强行做了一个 302 重定向到 "/upload/" ,也即被重定向到了原来的 url 后面添加了一个斜杠 "/"。然而重定向以后 POST 中传递的参数会全部丢失,包括上传文件。

    所以解决方案可以选择下面的多个方案之一:

1:避免 WebRoot 下面出现与 actionKey 相同的目录

2:在请求的 actionKey 后面事先添加上斜杠 "/" , 如 url 让它直接就是 "/upload/"

3:对所有的视图文件先建个 view 目录,然后再在这个 view 下面分别建子目录,这个方案其实与方案一本质是相同的,都是来避免 WebRoot 下目录名与 actionKey 不同

返回顶部
顶部