jfinal 3.2文件上传总是报了一个错: Corrupt form data: premature ending

Caused by: java.io.IOException: Corrupt form data: premature ending

at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:207)

at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:224)

at com.jfinal.upload.MultipartRequest.wrapMultipartRequest(MultipartRequest.java:107)

... 45 more



有朋友遇到过么?谢谢

评论区

JFinal

2017-08-24 17:24

这个仅仅是因为上传文件所使用的客户端在上传文件时,让文件没有正确结束,你可以简单认为是没有满足 http 协议的 multipart request 格式规范

解决办法极其简单,换一个可靠的文件上传客户端即可

tommy_sir

2017-08-24 17:38

@JFinal 多谢,我检查下。

tommy_sir

2017-08-24 17:52

@JFinal








Controller:
public void upload() {
UploadFile uploadFile = getFile();
}

非常简单的java类,还是出同样的错误?难道是jdk或是glassfish server的原因?

tommy_sir

2017-08-24 17:54

form id="prodFileUploadForm" action="/product/upload" method="POST" class="am-form" enctype="multipart/form-data"
input id="prdFile" name="prdFile" type="file"
input id="upload_btn" type="submit" value="上传"
form

JFinal

2017-08-24 18:40

@tommy_sir 用的什么客户端上传的? 看上去没有错误,注意请求是不是被重定向过:
http://www.oschina.net/question/941098_93842

tommy_sir

2017-08-24 20:53

@JFinal getFile时报上面的错误,没有重定向。客户端是普通浏览器Chrome,html直接post上传文件,下面是:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:79649
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryJZFInYCiBaVMkEiZ
Cookie:JSESSIONID=446431f154900a8fc4d657f60eb3
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/product/save
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36
Request Payload
------WebKitFormBoundaryJZFInYCiBaVMkEiZ
Content-Disposition: form-data; name="prdFile"; filename="无标题.png"
Content-Type: image/png


------WebKitFormBoundaryJZFInYCiBaVMkEiZ--

JFinal

2017-08-24 22:26

@tommy_sir 服务端用的是什么解析器? 是否在用 jfinal 官方提供的 cos.jar,在首页右侧下载 jfinal-3.2-all.zip 里面有这个 jar 包

tommy_sir

2017-08-25 10:05

@JFinal 引用的jar包都是jfinal-3.2-all.zip里头相关的jar包,也包含了cos-2017.5.jar。很奇怪。

tommy_sir

2017-08-25 10:12

@JFinal 运行换成tomcat就好了!在GlassFish上存在问题

tommy_sir

2017-08-25 10:25

JFinal

2017-08-25 11:23

@tommy_sir GlassFish 居然有这种问题,以前从来没碰到过

tommy_sir

2017-08-27 19:58

@JFinal 是的,我换成tomcat就好了!

热门反馈

扫码入社