FORM中有ENCTYPE="multipart/form-data",在servlet里面用request.getParameter()方法获得是null值,怎么才能取到正确值?不可以去掉ENCTYPE="multipart/form-data"来解决

解决方案 »

  1.   

    看看这个,对你应该有帮助
    http://www.wangchao.net.cn/bbsdetail_68525.html
      

  2.   

    现在的人,提问题都相当有艺术哈..把人搞得云里雾里,麻烦你能说清楚一点你的问题不?
    现在是什么样? 问题是什么? 代码贴出来?希望结果是怎么样? 这样问不是很好???
            enctype 是上传文件用的..
      

  3.   

    ENCTYPE="multipart/form-data"这个当然是上传文件用的,现在就是要用它,在提交的servlet里不晓得怎么取得表单里提交的参数值,用了ENCTYPE="multipart/form-data",提交的参数是以二进制传的,想再用request.getParameter()是得不到参数的值的。大家给个例子看看嘛
      

  4.   

    在没有任何框架的情况下,要自己解析request里的内容,request只能一次获取,上传文件的同时,再取parameter是取不到,我不知道你上传的文件是怎么接的,如果自己解析request里的内容,就可以同时把文件内容,parameter等等信息都解析出来。
      

  5.   

     DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            
            List items = new ArrayList();
            try {
    items = upload.parseRequest(request);
    } catch (FileUploadException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
            Iterator it;
            it = items.iterator();
            String assistants="";
            String file_sharing_system="";
            String internet_fax="";
            while(it.hasNext()) 
            {
                FileItem fileItem = (FileItem)it.next();
                if(fileItem.isFormField())
                {
                 System.out.println("---"+fileItem.getFieldName());
                 if("assistants".equals(fileItem.getFieldName())){
                 assistants=fileItem.getString("assistants");
                     assistants=Util.formatRequest(assistants, MailMain.s_os, SysConts.New_InCharSet);
                 }
                 if("file_sharing_system".equals(fileItem.getFieldName())){
                 file_sharing_system=fileItem.getString("file_sharing_system");
                     file_sharing_system=Util.formatRequest(assistants, MailMain.s_os, SysConts.New_InCharSet);
                 }
                 if("internet_fax".equals(fileItem.getFieldName())){
                 internet_fax=fileItem.getString("internet_fax");
                     internet_fax=Util.formatRequest(assistants, MailMain.s_os, SysConts.New_InCharSet);
                 }
                }
            }
    看我错在哪里了?谢谢!!
      

  6.   

    在servlet可以取到你传递的请求地址.就是那个action地址,可以把参数跟在地址后,以get方式提交.
    看看能取到不?取不到的话.自己取那个地址,反正参数就在后面.自己解析一下.
      

  7.   

    把参数放在url后面不太合理吧,提交的参数很多呢?这样做不太好
      

  8.   

    sorry.不是以get方式提交.文件上传的时候不能get提交.
    还是那方法.把参数附加在action后,在servlet直接取那个地址.
    类似String[] queryparams = request.getQueryString().split("&");
      

  9.   

    把参数附加在action后,这种方式可以实现,这样做你觉得好吗?我不想这样做,继续等待
      

  10.   

    fileItem.getString(String encoding),参数是编码方式。我想你要获取页面表单的数据,只能按页面表单的顺序调用fileItem.getString()方法来获取。
      

  11.   

    这种方式提交的复合表单,需要处理流数据,你可以自己处理;也可以搜 common-upload等别人封装好的东西来处理。
      

  12.   

    你把复合表单提交给这个程序:
    <%@ page import="java.io.*"%>
    <%
    InputStream is = (InputStream)request.getInputStream();byte[] buf = new byte[1024];
    int readn;while((readn = is.read(buf))!=-1){
    System.out.println(new String(buf,0,readn));
    }is.close();
    %>看看控制台输出你就明白了,自己处理其实也不难,不过建议使用common-upload.jar。