Java HTTPServletRequest在请求参数flashUploadFiles中不包含文件数据
浏览器请求不包含有效负载。例如:Java HTTPServletRequest在请求参数flashUploadFiles中不包含文件数据,java,servlets,file-upload,Java,Servlets,File Upload,浏览器请求不包含有效负载。例如: Request Payload: ------------Ij5ei4ae0cH2GI3ei4KM7Ef1cH2Ef1 Content-Disposition: form-data; name="Filename" uploadAsset1.csv ------------Ij5ei4ae0cH2GI3ei4KM7Ef1cH2Ef1 Content-Disposition: form-data; name="collection" 26 ----------
Request Payload:
------------Ij5ei4ae0cH2GI3ei4KM7Ef1cH2Ef1
Content-Disposition: form-data; name="Filename"
uploadAsset1.csv
------------Ij5ei4ae0cH2GI3ei4KM7Ef1cH2Ef1
Content-Disposition: form-data; name="collection"
26
------------Ij5ei4ae0cH2GI3ei4KM7Ef1cH2Ef1
Content-Disposition: form-data; name="flashUploadFiles"; filename="uploadAsset1.csv"
Content-Type: application/octet-stream
------------Ij5ei4ae0cH2GI3ei4KM7Ef1cH2Ef1
Content-Disposition: form-data; name="Upload"
Submit Query
------------Ij5ei4ae0cH2GI3ei4KM7Ef1cH2Ef1--
“flashUploadFiles”参数包含有效负载,但有时我无法解析内容。我使用tapestry框架和apache.commons.io来获取项目。例如:
if (ServletFileUpload.isMultipartContent(req)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = null;
try {
items = upload.parseRequest(req);
} catch (FileUploadException e) {
e.printStackTrace();
}
//items.size is zero
}
if(ServletFileUpload.isMultipartContent(req)){
FileItemFactory=new DiskFileItemFactory();
ServletFileUpload upload=新的ServletFileUpload(工厂);
列表项=空;
试试{
items=upload.parseRequest(请求);
}捕获(文件上载异常){
e、 printStackTrace();
}
//项目。大小为零
}
但是,项目列表始终为空
有趣的是,如果我重新启动Jetty服务器,同样的方法也会起作用,并且我能够获得项目列表。Tapestry配置中是否缺少某些内容?
是否有其他方法使用参数“flashUploadFiles”(仅包含文件名)获取上载文件的内容?
我无法使用request.getPart()方法,因为我们尚未迁移到Servlet 3.0您是否检查了文件是否为空?是的!文件就在那里,事实上,我甚至检查了请求的contentlength,并且随着我上传的文件的大小而变化。