Rewrite create_and_save_generic_file with a four-arg constructor to eliminate coupling to Rack::Multipart::UploadedFile