protected boolean readNextPart(MultipartStreamHandler aStream, String aBoundary) throws IOException
   {
      // try to read the first line
      String line = aStream.readLine();
      if (line == null) return true;
      else if (line.length() == 0) return true;

      // parse first line -- looks something like this:
      // content-disposition: form data;  name="field"; filename="file1.txt"
      String[] dispInfo = extractDispositionInfo(line);
//    String disposition = dispInfo[0];
      String name = dispInfo[1];
      String filename = dispInfo[2];

      // next line -- either empty or Content-Type followed by empty line
      line = aStream.readLine();
      if (line == null) return true;  // nothing left, we are done

      // get content type
      String contentType = extractContentType(line);
      if (contentType != null)
      {
         line = aStream.readLine();  // eat the empty line
         if (line == null || line.length() > 0) throw new IOException("Malformed line after content type: " + line);
      }
      else  // not specified so assume a default content type
         contentType = "text/plain";  // rfc1867 says this is the default

      // read the content
      if (filename == null)   // it is a parameter
      {
         String value = readParameter(aStream, aBoundary);
         fParameters.put(name, value);
      }
      else    // it is a file
      {
         readAndSaveFile(aStream, aBoundary, filename);
         if (filename.equals("unknown"))
            fFiles.put(name, new UploadedFile(null, null, null));
         else
            fFiles.put(name, new UploadedFile(fSaveDir.toString(), filename, contentType));
      }
      return false;  // we are not done -- there may be more
  }