我做一个项目,使用common-fileupload组件做上传时,在同一个表单中同时存在file类型 和 text 类型的参数,我想在表单提交上传中,同时获取普通的text类型的参数,并且将这些参数存入数据库中,请各位高手讲下,怎样才能在处理过程中获取text类型的内容?我用的是JSP+Servlet+JavaBean结构做的项目,处理数据库操作的方法全都封装在JavaBean,这样该怎样处理啊? 顺便求一个简单、思路清晰的对common-fileupload组件封装的类,支持多文件上传的。

解决方案 »

  1.   

    你可以使用jspsmartload来接收文件.可以通过它的getRequest().getParameter()来获取非File参数.
      

  2.   

    text类型??是不是Input type="text" name="***" id="***"这种?直接用request.getParameter("***");就可以。你求的那个网上很多。
      

  3.   

    如果 enctype 类型为 multipart/form-data 的话,使用 request.getParameter 是得不到数据的。你已经使用 FileUpload,那就肯定获得了 org.apache.commons.fileupload.servlet.ServletFileUpload 对象。通过 List<FileItem> fileItems = fileUpload.parseRequest(request) 获得 List<FileItem> 集合。遍历这个集合,在 FileItem 中有 isFormField 方法,如果为 true 表示是字段值,否则就是文件域。使用 FileItem#getFieldName() 获得 form 表单中的各控件的 name,FileItem#getString 获得非文件域的值。如果是文件域,使用 FileItem#get() 获得上传文件的字节数组,FileItem#getContentType() 获得上传的文件类型,FileItem#getSize() 获得文件大小,FileItem#getName() 获得上传的原始文件名。这些在 FileUpload 的文件和 API 上都是有的啊,难道都没看到?
      

  4.   

    用FileItem的isFormField()方法,如果返回true则说明是普通input域,然后调用FileItem实例的getFieldName()得到input域的name,getString()得到值;如果返回false说明是file类型的input域,调用FileItem实例的getInputStream()得到输入流