Java 在上载文件的同时获取复选框的值

Java 在上载文件的同时获取复选框的值,java,servlets,file-upload,Java,Servlets,File Upload,我试图使用commonsIO和Jar上传一个java图像文件。但我面临的问题是,我的表单上有两个复选框,如下所示: <div style="float:left"> <input name="Mcheckbox" type="checkbox" value="Mobile"/> Mobile </div> <div style="float:right"> <input name="Echechkbox" type="checkb

我试图使用commonsIO和Jar上传一个java图像文件。但我面临的问题是,我的表单上有两个复选框,如下所示:

<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>
但是每次MyMailPass或mymobilepass的值都会变为null。原因是什么?if语句从未执行。为什么?请帮助

试着这样做

 DiskFileUpload upload = new DiskFileUpload();
        String Chk1= "";
        String Chk2= "";
        try {

            List<FileItem> files= upload.parseRequest(request);
            for (FileItem item : files) {
                if (item.isFormField()) {
                    if (item.getFieldName("Mcheckbox")) {
                       //do some thing here 
                    } 
                }
DiskFileUpload upload=新的DiskFileUpload();
字符串Chk1=“”;
字符串Chk2=“”;
试一试{
列表文件=upload.parseRequest(请求);
用于(文件项:文件){
if(item.isFormField()){
if(item.getFieldName(“Mcheckbox”)){
//在这里做点什么
} 
}

希望这能有所帮助!!

问题是您没有在循环中设置
字段值

DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> files = new ServletFileUpload(factory).parseRequest(request);

for (FileItem item : files) {
    if (item.isFormField()) {
        String fieldname = item.getFieldName();
        String fieldvalue = item.getString();
        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 = item.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");

        }
    }
}
DiskFileItemFactory=new DiskFileItemFactory();
ServletFileUpload upload=新的ServletFileUpload(工厂);
列表文件=新ServletFileUpload(工厂).parseRequest(请求);
用于(文件项:文件){
if(item.isFormField()){
字符串fieldname=item.getFieldName();
String fieldvalue=item.getString();
if(fieldname.compareTo(“Mcheckbox”)==0){
System.out.println(“复选框值为”+字段值);
mymobilepass=字段值;
}else if(fieldname.compareTo(“Echeckbox”)==0){
System.out.println(“复选框值为”+字段值);
myemailpass=字段值;
}
}否则{
InputStream=item.getInputStream();
FileOutputStream fos=新的FileOutputStream(路径+“\\”+fi.getName());
int x=is.read();
而(x>=0){
fos.写入((字节)x);
x=is.read();
//系统输出打印项次(“读取”);
}
}
}

您是否将所有内容都包装在
标记中,为什么不将值作为
request.getParameter(“Mcheckbox”)
@sankrish-Yeah将所有内容包装在标记中form@sankrish因为我曾经在这里解析过请求:List files=new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);如果我再次尝试获取参数,那么它们显然将为NULL。此外,表单enctype=“multipart/form data”@LeosLiterak是的,它是“multipart/form data”@LeosLiterak你所说的多个实例是什么意思?我不明白。@sankrish你改变了什么?我没有看到任何这样的改变?@user3522121你没有使用这个方法
getFieldName()
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");

        }
    }
}
 DiskFileUpload upload = new DiskFileUpload();
        String Chk1= "";
        String Chk2= "";
        try {

            List<FileItem> files= upload.parseRequest(request);
            for (FileItem item : files) {
                if (item.isFormField()) {
                    if (item.getFieldName("Mcheckbox")) {
                       //do some thing here 
                    } 
                }
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> files = new ServletFileUpload(factory).parseRequest(request);

for (FileItem item : files) {
    if (item.isFormField()) {
        String fieldname = item.getFieldName();
        String fieldvalue = item.getString();
        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 = item.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");

        }
    }
}