code: public void parseRequestStream(InputStream inputStream, String charset) throws IOException {
  		setLoaded();
  
  		MultipartRequestInputStream input = new MultipartRequestInputStream(inputStream);
  		input.readBoundary();
  		while (true) {
  			UploadFileHeader header = input.readDataHeader(charset);
  			if (header == null) {
  				break;
  			}
  
  			if (header.isFile == true) {
  				// 文件类型的表单项
  				String fileName = header.fileName;
  				if (fileName.length() > 0 && header.contentType.contains("application/x-macbinary")) {
  					input.skipBytes(128);
  				}
  				UploadFile newFile = new UploadFile(header, setting);
  				newFile.processStream(input);
  
  				putFile(header.formFieldName, newFile);
  			} else {
  				// 标准表单项
  				ByteArrayOutputStream fbos = new ByteArrayOutputStream(1024);
  				input.copy(fbos);
  				String value = (charset != null) ? new String(fbos.toByteArray(), charset) : new String(fbos.toByteArray());
  				putParameter(header.formFieldName, value);
  			}
  
  			input.skipBytes(1);
  			input.mark(1);
  
  			// read byte, but may be end of stream
  			int nextByte = input.read();
  			if (nextByte == -1 || nextByte == '-') {
  				input.reset();
  				break;
  			}
  			input.reset();
  		}
  	}
docs: 提取上传的文件和表单数据
  
  @param inputStream HttpRequest流
  @param charset 编码
  @throws IOException IO异常