There's certain configuration properties on the component itself (link). At larger file sizes (hundreds of megabytes?) you might start to hit limits with our webserver's default configurations.
You can absolutely upload a zip file. There's no built-in handling for separating out the internal files, but it's definitely possible to script something to do so.
You can use Python's zipfile
(e.g. code: Can't extract .gwbk with zipfile.ZipFile on Windows (works fine in Linux)) but I'd recommend using Java's standard library (also mentioned in the above post).