重构：文件上传