原始JSP表单页面结构:<form action="save.jsp" method=post>
  <table width="681" height="590" border="1">
     添加记录
     客户名称: 
     <input name="cname" type="text">
     网站地址:
     <input name="webaddress" type="text">
          客户类型:
        <select name="select" size="1">
          <option>装饰设计类</option>
          <option>酒店类</option>
          <option>医疗器械类</option>
          <option>企业类</option>
        </select>      
      企业介绍:</span></p>        
        <textarea name="describe" cols="35" rows="5" wrap="PHYSICAL" class="style7"></textarea>     <input name="Submit1" type="reset" value="重置">             
        <input name="Submit2" type="submit" value="提交">
</form>添加一个type="file"后,提交到save.jsp后,request.getParameter("cname");得到的数据就变成null的了!~为啥?<form action="save.jsp"  enctype="multipart/form-data" method=post>
  <table width="681" height="590" border="1">
     添加记录
     客户名称: 
     <input name="cname" type="text" >
     网站地址:
     <input name="webaddress" type="text" >
     图片地址:(JPG &amp; GIF)
     <input name="file" type="file" > 
     客户类型:
        <select name="select" size="1">
          <option>装饰设计类</option>
          <option>酒店类</option>
          <option>医疗器械类</option>
          <option>企业类</option>
        </select>      
      企业介绍:</span></p>        
        <textarea name="describe" cols="35" rows="5" wrap="PHYSICAL" class="style7"></textarea>     <input name="Submit1" type="reset" value="重置">             
        <input name="Submit2" type="submit" value="提交">save.jsp页面部分代码:
</form>
<%@ page contentType="text/html"%>
<%@ page pageEncoding="GB2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%
String  cname=request.getParameter("cname");           //客户名
       //byte a[] = cname.getBytes("ISO-8859-1");
       //cname = new String(a);
String  webaddress=request.getParameter("webaddress"); //网站地址
         //byte b[] = webaddress.getBytes("ISO-8859-1");
       //webaddress = new String(b);
String  picfile=request.getParameter("file");        //上传图片String  select=request.getParameter("select");         //图片类型
        //byte c[] = select.getBytes("ISO-8859-1");
       //select = new String(c);
String  describe=request.getParameter("describe");     //网站描述
       //byte d[] = describe.getBytes("ISO-8859-1");
       //describe = new String(d);out.print("<br>你提交的客户名为:"+cname);
out.print("<br>你提交的网站地址为:"+webaddress);
out.print("<br>你提交的图片类型为:"+picfile);
out.print("<br>你提交的图片地址:"+select);
out.print("<br>你提交的客户描述信息为:"+describe);
.............
.........
.....
..
.

解决方案 »

  1.   

    原因就是form其中添加了enctype="multipart/form-data"属性
    所以你再用request.getParameter是不行地。
      

  2.   

    恩,用输入流吧,在save.jsp中获取提交过来的输入流,然后逐个解析吧,
      

  3.   

    建议用第三方工具吧
    jspSmartUpload、fileupload
    都是很好的东西,而且处理输入流也非常方便。
    ====================================
    引自:http://sylinx-yqg.javaeye.com/blog/106712
    用jspSmartUpload上传文件同时获得参数的方法。 
    表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。
    但是设置了 enctype="multipart/form-data" ,除了file类型表单能获取到,其他value通过request.getParameter都得不到。SmartUpload提供的解决的方法是 用如下:
       SmartUpload su = new com.jspsmart.upload.,通过 su.getRequest().getParameter("value");就可以了,su.upload()必须放在前面,测试中将su.upload()放在获取参数后面不成功。这里SmartUpload 已经自动解决中文乱码的问题,不用再转化!
    =====================================
    引自:http://chinesedocument.com/html/jishuxueyuan/J2EE/Servlet_Jsp/20070412/3731.html
    FileUpload fu = new FileUpload();
    ...
    List fileItems = fu.parseRequest(request);
    Iterator iter = fileItems.iterator();
     while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();
      //忽略其他不是文件域的所有表单信息
      if (!item.isFormField()) {
       String name = item.getName();
       long size = item.getSize();
       if((name==null||name.equals(“”)) && size==0)
       continue;
    ...
    }
      

  4.   

    getParameter之前有过重定向了吧`?
      

  5.   

     <select name="select" size="1"> 
               <option>装饰设计类 </option> 
               <option>酒店类 </option> 
               <option>医疗器械类 </option> 
               <option>企业类 </option> 
             </select>       这些option是不是给它一个value啊.是不是没有属性就是它的text呢?
     <select name="select" size="1"> 
               <option value="装饰设计类 ">装饰设计类 </option> 
               <option value="酒店类 ">酒店类 </option> 
               <option value="医疗器械类">医疗器械类 </option> 
               <option value="企业类">企业类 </option> 
             </select>       关于用到的文件上传的确是通过request取不到参数值的.我用一个上传工具是通过它里边的方法去取得参数的.
      

  6.   

    enctype="multipart/form-data"
    -------------------------DiskFileUpload~
    用它来处理上传的文件也挺好的~
    lz搜下~
      

  7.   

    三楼的很有道理!~
    我就用的Apache的Fileupload组件,请问有解决的办法没?
    表单和图片是要同时提交的。
    好多JSP网站肯定也有类似的页面,这个应该有解决的办法。
    遇到过这样的问题的给小弟传点资料看看.
    我还想用Apache的Fileupload组件.....
      

  8.   

    你可以用request.getServlet.getParameter()试试看 
      

  9.   

    request.getServlet cannot be resolved or is not a field
     
    楼上的兄弟,报错了!~
      

  10.   

    原因就是form其中添加了enctype="multipart/form-data"属性 
    所以你再用request.getParameter是不行地。
    上传播文件还是用控件吧,jspSmartUpload很简单的。
      

  11.   

    我还想用Apache的Fileupload组件。
    请问又解决的办法没?
      

  12.   

    网上有关JspSmartUpload的资料都是《上传下载全攻略jspSmartUpload》.千篇一律的转载,恐怕现在有人要转载再想找到
    文章的真正出处,恐怕也难了.hehe~
    转来转去就是没有有关表单信息与文件信息一同提交遇到的问题的文章!~
    胲~这可如何是好?
      

  13.   

    上传下载 建议使用jspSmartUpload
      

  14.   

    问题已经基本解决了!
    方法:
    .
    ...
    .......
    ..........
    while (iter.hasNext()) {
      FileItem item = (FileItem)iter.next();
      String fieldName=item.getFieldName(); //取得上传表单内所定义的单行文本框里的内容.
      
      if(fieldName.equals("cname") ){ 
        cname=item.getString(); 
      } 
      if(fieldName.equals("webaddress") ){ 
    webaddress=item.getString(); 
      }
      if(fieldName.equals("file") ){ 
      imgpath=item.getString();//注意此处的imgpath获得是图片数据,而不是上传前的路径。如果获得上传前路径建议使用imgpath=item.getName();
     
      if(fieldName.equals("select") ){ 
        select=item.getString(); 
        
      }
      if(fieldName.equals("describe") ){ 
    describe=item.getString(); 
      }
    ...........
    ......
    ..
      

  15.   

    正在学习。我想问如果有俩个 type="file",它读取出来是怎么往数据库里存放。望指教