I never noticed before, but it seems you can't send compressed data from an HTTP client back up to the server. You can't set the enctype to 'deflate' or 'gzip'. If you compress it yourself, say with lzw in Javascript, the %FF url-encoding that happens before data goes on the wire defeats the purpose. Since most clients have a much slower upstream than downstream, compression seems like it could be a nice win for webapps.
So, clever hackers, can you think of a way to do it with existing protocols and implementations? I offer a frosty beer for a 2:1 or better solution. Points off for using Flash.
Not true. It is perfectly valid for an HTTP client to send an entity (as part of a PUT or POST, for example) with Content-Encoding: gzip. RFC 2616 specifically mentions this case, in fact.
That said, in most situations this isn't worth the effort. Until you've established a connection to an HTTP server, you have no way of knowing if it will accept any particular Content-Encoding; a server which doesn't understand the encoding of a provided entity SHOULD return a "415 Unsupported Media Type" response code, but trusting that every server you'll ever encounter will respond correctly is probably overly optimistic.
Of course, there's always the ultimate in portability: Send your data with a Content-Type of "application/octet-stream", and decompress at the back-end.