hs: Make the uploads directory if it doesn't exist. Namespace uploads by the base64 encoded user id of the uploader. Make a reasonable attempt to retry clashing upload paths. Try to guess a sensible file extension depending on the content type.
hs: Make the uploads directory if it doesn't exist. Namespace uploads by the base64 encoded user id of the uploader. Make a reasonable attempt to retry clashing upload paths. Try to guess a sensible file extension depending on the content type.

rzr/synapse,iot-factory/synapse,matrix-org/synapse,TribeMedia/synapse,howethomas/synapse,TribeMedia/synapse,howethomas/synapse,howethomas/synapse,illicitonion/synapse,iot-factory/synapse,iot-factory/synapse,illicitonion/synapse,illicitonion/synapse,howethomas/synapse,illicitonion/synapse,matrix-org/synapse,iot-factory/synapse,howethomas/synapse,matrix-org/synapse,iot-factory/synapse,matrix-org/synapse,illicitonion/synapse,matrix-org/synapse,rzr/synapse,rzr/synapse,rzr/synapse,matrix-org/synapse,rzr/synapse,TribeMedia/synapse,TribeMedia/synapse,TribeMedia/synapse