core: allow replace_file with props, media-props, and #upload{}