TSOA @UploadedFile装饰器无法接收上传文件问题求助
解决TSOA提示"file is required"但已传入文件的问题
针对你遇到的TSOA接口拒绝接收multipart文件的问题,试试下面这些排查和解决步骤:
确认multer配置与TSOA集成正常
TSOA依赖multer处理文件上传,首先检查你的项目是否正确配置了multer:- 确保
tsoa.json里的middleware设置为"express"(如果用Express框架的话) - 查看自动生成的
routes.ts文件,对应接口是否包含multer({...}).single('file')的处理逻辑,确认TSOA生成的路由已正确加载multer中间件
- 确保
严格匹配表单字段名与@UploadedFile参数名
检查Postman里form-data的字段名是否和代码里@UploadedFile('file')的file完全一致,包括大小写——TSOA对参数名区分大小写,比如Postman里写File就会匹配失败,必须是小写的file,还要注意字段名前后没有多余空格不要手动设置Content-Type请求头
Postman发送multipart/form-data请求时,会自动生成包含boundary的Content-Type头,手动设置这个头会导致TSOA无法正确解析表单数据,直接让Postman自动处理即可排查TSOA版本问题
部分旧版本的TSOA在@UploadedFile注解的处理上存在bug,建议升级到最新稳定版,然后重新运行tsoa routes命令生成路由用curl测试排除Postman配置问题
执行下面的curl命令测试接口,确认是否是Postman的配置问题:curl -X POST -F "file=@/本地文件路径" http://你的接口地址/...如果curl请求成功,说明Postman可能存在缓存或文件未正确选中的问题,尝试重启Postman或重新添加文件参数
确认控制器被TSOA正确扫描
运行tsoa routes时,确保控制台没有报错,且目标控制器被正确扫描到,生成的路由文件里包含该接口的定义
内容的提问来源于stack exchange,提问作者Gtomika
相关产品推荐
相关产品推荐

