重构上传文件的逻辑