Django REST Framework上传图片出现MultiValueDictKeyError: 'files'错误求助
问题原因排查
1. 405 方法不允许错误
该错误由错误的请求方法触发,你首次请求/scanner/batch-upload/接口使用了GET方法,但该上传接口仅支持POST请求,因此直接返回405状态码。
2. 500 MultiValueDictKeyError 错误
该错误是修改为POST请求后触发的核心异常,报错点位于accounts/views.py第336行的file_path = request.FILES['files'].read()代码。Django无法从请求的文件字典中读取到files对应的键值,说明请求端上传文件时要么没有携带文件参数,要么上传文件的字段名不是files,或是请求头配置错误导致Django未识别到文件内容。
修复方案
- 所有上传请求统一使用POST方法,禁止用GET请求调用文件上传接口
- 检查请求配置:
- 必须将请求头
Content-Type设置为multipart/form-data,否则Django不会把提交的文件解析到request.FILES中 - 上传文件对应的表单字段名必须设置为
files,和后端代码读取的键名完全一致
- 必须将请求头
- 可添加参数校验逻辑避免直接抛出500错误,参考代码:
if 'files' not in request.FILES: return Response({"error": "缺少必填的files文件参数"}, status=400) file_obj = request.FILES['files'] # 后续处理文件逻辑
内容的提问来源于stack exchange,提问作者Kamran arshad
相关产品推荐
相关产品推荐

