使用环境如下:JBuilder2006,Tomcat5.5,fileupload-1.1.1
表单代码如下:
<form action="uploadhand" method="POST" enctype="multipart/form-data">
<table>
  <tr>
    <td>请选择要上传的文件:</td>
    <td>
      <input type="file" name="file1" size="40"/>
    </td>
  </tr>
  <tr>
    <td>请文件的描述:</td>
    <td>
      <input type="text" name="desc1" size="40"/>
    </td>
  </tr>
  <tr>
    <td>请选择要上传的文件:</td>
    <td>
      <input type="file" name="file2" size="40"/>
    </td>
  </tr>
  <tr>
    <td>请文件的描述:</td>
    <td>
      <input type="text" name="desc2" size="40"/>
    </td>
  </tr>
  <tr>
    <td><input type="submit" value="提交" /></td>
    <td><input type="reset" value="重填" /></td>
  </tr>
</table>servlet中用fileItems = upload.parseRequest(request);
进行时在表单中不管填什么都提示fileItems为null.请高手指点.

解决方案 »

  1.   

    我用的是Apache组织的commons-fileupload组件
    下面是servlet中的代码
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //设置内存缓冲区的域值
            factory.setSizeThreshold(4096);        //设置当内容大于内存缓冲区的域值时,设置文件的存储位置。
            factory.setRepository(new File("/tmp"));
            ServletFileUpload upload = new ServletFileUpload(factory);
            //DiskFileUpload upload = new DiskFileUpload(factory);
            //设置上传文件的最大值。
            upload.setSizeMax(1000000);        List fileItems = null;
            try {
                fileItems = upload.parseRequest(request);
            } catch (FileUploadException ex) {
            }
            //传过来两个文件,第一个文件是一个简单的文本文件;第二个文
            //不知道大小并且将写到服务器中。
            if (fileItems != null) {
                Iterator iterator = fileItems.iterator();
                while (iterator.hasNext()) {
                    FileItem fileItem = (FileItem) iterator.next();                //判断是否是文件域的表单信息.
                    if (!fileItem.isFormField()) {
                        //获取上传的文件名(包括路径)
                        String fileName = fileItem.getName();
                        long size = fileItem.getSize();
                        System.out.println("fileName:" + fileName);
                        System.out.println("size:" + size);                    int index = fileName.lastIndexOf(File.separator);
                        if (index > 0) {
                            fileName = fileName.substring(index + 1,
                                    fileName.length());
                        }                    File toFile = null;
                        //打开文件
                        toFile = new File("E:\\uploadFile", fileName);
                        //当文件不存在时创建文件.
                        if (!toFile.exists()) {
                            //创建文件前,先看是否存在目录.先获取目录.
                            File dir = toFile.getParentFile();
                            //当目录不存在时,创建目录.
                            if (!dir.exists()) {
                                dir.mkdirs();
                            }
                            //有了目录后再创建文件,这样就不会创建文件失败.
                            toFile.createNewFile();
                        }
                        //写文件
                        try {
                            fileItem.write(toFile);
                            System.out.println("上传成功");
                        } catch (Exception ex1) {
                            System.out.println("上传失败");
                            ex1.printStackTrace();
                        }
                    }            }
            }
        }
    可进行时总是提示空引用.