Using a mix of reflection and mapping for upload options

rather than the struct tags solution, as this was becoming
difficult to manage as the struct tags cannot be multiline.