解决post提交表单(文件上传) request.getParameter 取值为空的问题

来源:互联网 发布:apache源代码下载 编辑:程序博客网 时间:2024/05/22 03:45

像碰到form表单中既有文件上传,又有接收的字段的时候,字段想用 request.getParameter 来得到,往往是null

<form action="FileUpload" method="post" enctype="multipart/form-data" name="form1">    <input type="text" name="text">   <input type="file" name="file">     <input type="button" name="Submit" value="upload" onclick="ok()"> </form>

如上在public void doPost(HttpServletRequest request, HttpServletResponse response)  中调用request.getParameter("text")得到的是null

怎么才能得到呢?有两种解决方案

1、用两个表单: (比较麻烦)
一个采用POST提交的文件上传的from ,一个采用GET提交的字段的from ,再将第二个form的值作为第一个的参数

 function ok()  {        var name = form2.name.value;        var title= form2.title.value;        form1.action="FileUpload?name="+name+"&title="+title;        form1.submit();  }

2、commons-fileupload 判断fieldName,来区分是上传的文件还是字段

ServletFileUpload upload = new ServletFileUpload(factory);    try {         List  items = upload.parseRequest(request);         for (Iterator i = items.iterator(); i.hasNext();) {                    FileItem fileItem = (FileItem) i.next();                    String field = fileItem.getFieldName();  //判断fieldname,                  if(field.equals("kind")){                              kind = fileItem.getString();                              continue;                    }else if(field.equals("id")){                             id = fileItem.getString();                             continue;                    }else if(field.equals("topic")){                             topic = fileItem.getString();                             continue;                    } 


3、jspSmartUpload  专门提供了 SmartUpload.getRequest().getParameter("text")
    具体介绍见我另外一篇博客   http://blog.csdn.net/jazywoo123/article/details/7900114



原创粉丝点击