The Zipload module provides an upload form that allows to upload unmanaged files before compressing them on the client side.
After the upload the files get decompressed on the server side to the target destination specified in the form field.
It also provides upload hooks and dispatched events that let other modules hook and subscribe in order to customize the validation of the files and their target upload destination path.