重构上传组件