浏览器请求确实包含有效负载。例如:
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
}
但是,项目列表始终为空。
有趣的是,如果我重新启动我的Jetty服务器,同样的方法可以工作,我可以获得项目列表。我在Tapestry配置中遗漏了什么? 是否有其他方法可以使用参数“flashUploadFiles”(仅包含文件名)来上传文件的内容? 我不能使用request.getPart()方法,因为我们还没有迁移到Servlet 3.0