##### Commons FileUpload

- Overview
- User guide
- Streaming API
- FAQ
- Javadoc
- Mailing lists
- Team
- Tasks
- SVN repository

##### Project Documentation

- Project Information
- Project Reports

##### Commons

- Home
- Components
- Sandbox
- Dormant
- Volunteering
- Contributing Patches
- Building Components
- Releasing Components
- Wiki

##### ASF

- Sponsorship
- Thanks

## TODO list

The following is a list of items that need to be completed in Fileupload. Contributions are welcome!

### High priority

### Medium priority

- Additional unit tests to increase code coverage.
- Documentation for the customization capabilities.

### Low priority

## Completed

### Since 1.0 Beta 1 Release

- Split the `FileUpload` class into an abstract base class and two concrete classes, one of which is specific to a disk-based repository and the other a more generic implementation.
- Replaced the ad hoc `newInstance()` means of creating `FileItem` instances with a factory-based scheme for much greater flexibility and simpler customization. This change also eliminates a dependency on Commons BeanUtils.
- Change the semantics of the size threshold to apply to the size of individual items, instead of the size of the overall request. This is in line with the original documentation, and better meets user expectations.
- Added unit tests for exceptional conditions, and to test new functionality.

## Deprecated

### Since 1.0 Beta 1 Release

- In the `FileItem` interface, the `setIsFormField()` method has been replaced by the `setFormField()` method.
- In the `FileItem` interface, the `write(String)` method has been replaced by the `write(File)` method.
- The `sizeThreshold` property of the `FileUpload` class has been moved to the `DiskFileUpload` class.
- The `repositoryPath` property of the `FileUpload` class has been moved to the `DiskFileUpload` class.
- The disk-specific `parseRequest()` method of the `FileUpload` class has been moved to the `DiskFileUpload` class.

## Backwards Incompatible Changes

### Since 1.0 Beta 1

- `FileItem.newInstance()` has been replaced by the use of factories to create new `FileItem` instances.
- The `storeLocation` property of the `FileItem` interface has been removed, since it is (disk-based) implementation specific.

## Semantic Changes

### Since 1.0 Beta 1

- The `sizeThreshold` property now applies to the size of each item, rather than the size of the request as a whole. This is more in keeping which user expectations, as well as matching the original documentation.