【发布时间】:2014-04-16 06:09:02
【问题描述】:
我试图在 java 中使用 commonsIO 和 Jar 上传图像以进行文件上传。但面临的问题是我的表单上有两个复选框,如下所示:
<div style="float:left">
<input name="Mcheckbox" type="checkbox" value="Mobile"/>
Mobile
</div>
<div style="float:right">
<input name="Echechkbox" type="checkbox" value="Email"/>
Email
</div>
然后浏览选项:
Upload Image : <INPUT TYPE="file" NAME="file" value="file"></input>
在我的 servlet 中我正在做这样的事情:
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
List<FileItem> files = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
Iterator it = files.iterator();
然后:
while (it.hasNext()) {
FileItem fi = (FileItem) it.next();
if (fi.isFormField()) {
if (fieldname.compareTo("Mcheckbox") == 0) {
System.out.println("checkbox value is " + fieldvalue);
mymobilepass = fieldvalue;
} else if (fieldname.compareTo("Echeckbox") == 0) {
System.out.println("checkbox value is " + fieldvalue);
myemailpass = fieldvalue;
}
} else {
InputStream is = fi.getInputStream();
FileOutputStream fos = new FileOutputStream(path + "\\" + fi.getName());
int x = is.read();
while (x >= 0) {
fos.write((byte) x);
x = is.read();
//System.out.println("reading");
}
}
}
但是每次都将 myemailpass 或 mymobilepass 的值设为 null。可能是什么原因? if 语句从不执行。为什么?请帮忙
【问题讨论】:
-
您是否将所有内容都包含在
<form>标记中,为什么不将值设为request.getParameter("Mcheckbox" ) -
@sankrish 是的,我正在将所有内容都包装在表单中
-
@sankrish 因为我在这里解析了一次请求: List
files = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);.如果我尝试再次获取参数,那么显然他们将是 NULL 。此外,形式 enctype="multipart/form-data" -
@LeosLiterak 是的,它是“multipart/form-data”
-
@LeosLiterak 你说的多个实例是什么意思?我没听懂。
标签: java servlets file-upload