end to end image file upload