Image Upload

This seems to more or less work, but I can't say it's pretty.  Might be good for someone else to double-check before merging.