How use custom upload directories in filesystem and url based on media type or category

I suggest you search on Github for a plugin that’ll suit your needs. A quick search lead me to wp-file-upload