因为要上传文件,所以有file控件,这样就必须有ENCTYPE="multipart/form-data"(二进制方式上传),这样一来,form表单中其他控件的值就都取不到了,大家有没有一个两全其美的办法呢

解决方案 »

  1.   

    有的。用apache的包。上網查一下。我剛做了一個。
      

  2.   

    确实取不到的你可以想其他办法,可以在文件上传提交的时候保存一些东西到hidden里面
      

  3.   

    保存到hidden里面提交过去,到了servlet里面还是取不到值吧
      

  4.   

    en 
    我想错了,确实取不到以前项目是用iframe做的。有个画面,他有上下两个frame,上面一个用于文件上传,结果我就把一些域的值存放在下面那个frame里面,这样就没问题肯定可以取到了
      

  5.   

    我一般是这样做的先在申明一个处理上传文件的javaBean
    <jsp:useBean id="myUpload" scope="page" class="xiaoxiang.fileUpload.upBean" />
    然后通过下面的方法可取另外的参数值
    myUpload.getRequest().getParameter("参数名或控件名")这个方法绝对OK
      

  6.   

    用struts应该没这个问题,和普通页面的操作方式一样
      

  7.   

    我怎么感觉wangx1949() 说的方法好像是struts架构中的取值方法,我现在的程序是最原始的程序,无框架,就是想从servlet中得到page中提交的值,看来只有通过session传递了
      

  8.   

    很简单的东西啊,不管是jspsmartupload还是oreilly的上传组件都提供了读取参数的方法。jspsmartupload用的是wangx1949() 的方法,而oreilly是用readnext()(具体形式不记得)函数,文件和参数是等同的,一段一段的读,然后他有个函数判断是文件还是参数,然后做相应的处理,你看看文档和自带的例子就清楚了!
      

  9.   

    关键程序是无组件的,没有jspsmartupload,而现在我又不想改动太大,变成使用组件上传,难就难在这了!!
      

  10.   

    还得靠自己,总算找到办法了,用下面方法可以取道文本等控件的值,只不过执行下面代码后request变量里面为空了(其值付给了List),如果取file控件的值的操作在后面(在同一地点就没有这种问题了)就不能用request了,而应该直接用List变量items 或 Iterator变量itr
          List items = null;
                   try{
            DiskFileUpload upload = new DiskFileUpload();
            items = upload.parseRequest(request);
            Iterator itr = items.iterator();
            while(itr.hasNext()) {
            FileItem item = (FileItem) itr.next();
            if(item.isFormField()) {
            String fieldName = item.getFieldName();
            if(fieldName.equals("txtContentsJ")){
                    //内容(日本版)
             reqContentsJ = item.getString();
            }else if(fieldName.equals("txtContentsE")){
                    //内容(英語版)
             reqContentsE = item.getString();
            }
            }
            }        }catch(Exception e) {
              logger.error("Exception:" + e);
            }