Java 为什么在使用servlet上载图像时请求中的项目列表为空
我正在尝试使用servlet上传图像,post方法中servlet的主要部分如下所示:Java 为什么在使用servlet上载图像时请求中的项目列表为空,java,forms,servlets,file-upload,multipartform-data,Java,Forms,Servlets,File Upload,Multipartform Data,我正在尝试使用servlet上传图像,post方法中servlet的主要部分如下所示: if (ServletFileUpload.isMultipartContent(request)) { try { List<FileItem> multiparts = new ServletFileUpload( new DiskFileItemFactory()).parseRe
if (ServletFileUpload.isMultipartContent(request)) {
try {
List<FileItem> multiparts = new ServletFileUpload(
new DiskFileItemFactory()).parseRequest(request);
Iterator iter = multiparts.iterator();
System.out.println(multiparts.size()); // this is giving me zero
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
String fileName = item.getName();
File file = new File(filePath + File.separator + fileName);
item.write(file);
}
//File uploaded successfully
} catch (Exception ex) {
request.setAttribute("message", "File Upload Failed due to " + ex);
}
} else {
// error occured
}
我还要提到的一件事是,在请求到达这个servlet之前,会使用登录过滤器重定向未经授权的用户
形式如下:
<form action="ChangeAvtar" method="post" enctype="multipart/form-data" id="change_avtar">
<a onclick="document.getElementById('file').click()" >Edit</a>
<input type="file" id="file" style="display:none" onchange="javascript:uploadAvtar();"/>
</form>
function uploadAvtar() {
document.getElementById("change_avtar").submit();
}
谢谢。您的输入元素没有name属性,我认为这是必需的。如果你加一个会有什么不同吗?@Petter:非常感谢这就是问题所在,你的建议解决了它。我犯了几个愚蠢的错误。很高兴听到你成功了: