jodd-core/src/main/java/jodd/io/upload/MultipartStreamParser.java
public void parseRequestStream(final InputStream inputStream, final String encoding) throws IOException {
		setParsed();

		MultipartRequestInputStream input = new MultipartRequestInputStream(inputStream);
		input.readBoundary();
		while (true) {
			FileUploadHeader header = input.readDataHeader(encoding);
			if (header == null) {
				break;
			}

			if (header.isFile) {
				String fileName = header.fileName;
				if (fileName.length() > 0) {
					if (header.contentType.indexOf("application/x-macbinary") > 0) {
						input.skipBytes(128);
					}
				}
				FileUpload newFile = fileUploadFactory.create(input);
				newFile.processStream();
				if (fileName.length() == 0) {
					// file was specified, but no name was provided, therefore it was not uploaded
					if (newFile.getSize() == 0) {
						newFile.size = -1;
					}
				}
				putFile(header.formFieldName, newFile);
			} else {
				// no file, therefore it is regular form parameter.
				FastByteArrayOutputStream fbos = new FastByteArrayOutputStream();
				input.copyAll(fbos);
				String value = encoding != null ? new String(fbos.toByteArray(), encoding) : 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();
		}
	}
public void parseRequestStream(final InputStream inputStream, final String encoding) throws IOException {
		setParsed();

		MultipartRequestInputStream input = new MultipartRequestInputStream(inputStream);
		input.readBoundary();
		while (true) {
			FileUploadHeader header = input.readDataHeader(encoding);
			if (header == null) {
				break;
			}

			if (header.isFile) {
				String fileName = header.fileName;
				if (fileName.length() > 0) {
					if (header.contentType.indexOf("application/x-macbinary") > 0) {
						input.skipBytes(128);
					}
				}
				FileUpload newFile = fileUploadFactory.create(input);
				newFile.processStream();
				if (fileName.length() == 0) {
					// file was specified, but no name was provided, therefore it was not uploaded
					if (newFile.getSize() == 0) {
						newFile.size = -1;
					}
				}
				putFile(header.formFieldName, newFile);
			} else {
				// no file, therefore it is regular form parameter.
				FastByteArrayOutputStream fbos = new FastByteArrayOutputStream();
				input.copyAll(fbos);
				String value = encoding != null ? new String(fbos.toByteArray(), encoding) : 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();
		}
	}
public void parseRequestStream ( final InputStream inputStream , final String encoding ) throws IOException { setParsed ( ) ; MultipartRequestInputStream input = new MultipartRequestInputStream ( inputStream ) ; input . readBoundary ( ) ; while ( true ) { FileUploadHeader header = input . readDataHeader ( encoding ) ; if ( header == null ) { break ; } if ( header . isFile ) { String fileName = header . fileName ; if ( fileName . length ( ) > 0 ) { if ( header . contentType . indexOf ( "application/x-macbinary" ) > 0 ) { input . skipBytes ( 128 ) ; } } FileUpload newFile = fileUploadFactory . create ( input ) ; newFile . processStream ( ) ; if ( fileName . length ( ) == 0 ) { // file was specified, but no name was provided, therefore it was not uploaded if ( newFile . getSize ( ) == 0 ) { newFile . size = - 1 ; } } putFile ( header . formFieldName , newFile ) ; } else { // no file, therefore it is regular form parameter. FastByteArrayOutputStream fbos = new FastByteArrayOutputStream ( ) ; input . copyAll ( fbos ) ; String value = encoding != null ? new String ( fbos . toByteArray ( ) , encoding ) : 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 ( ) ; } }
Extracts uploaded files and parameters from the request data.
Extracts uploaded files and parameters from the request data .