Flutter上传视频到Django后端返回400错误如何解决
问题排查与解决方案
第一步:获取后端返回的具体错误信息
你当前代码中已经监听了返回的响应内容,先查看控制台打印的
value字段内容,后端会返回具体的错误原因(比如字段不匹配、文件超出大小限制、参数缺失等),优先根据提示定位问题效率最高。
常见问题及对应修复方案
后端文件接收字段名不匹配
你当前代码中MultipartFile的字段名设置为"video",需确认后端接口接收文件的字段名是否一致,若后端要求字段为"file"等其他值,修改对应字段名即可。缺少必要的请求头/表单参数
部分后端接口要求携带额外请求头(如Accept: application/json、授权校验头)或额外表单参数,可按如下代码补充对应配置:Future uploadVideo(File videoFile) async { var uri = Uri.parse("http://192.168.1.6:8000/videos/"); var request = http.MultipartRequest("POST", uri); // 补充必要请求头,示例如下 request.headers.addAll({ "Accept": "application/json", // 若接口有授权要求,补充对应授权头:"Authorization": "Bearer 你的接口token" }); // 若后端要求额外表单参数,补充如下: // request.fields["user_id"] = "123"; var multipartFile = await http.MultipartFile.fromPath( "video", videoFile.path, ); request.files.add(multipartFile); StreamedResponse response = await request.send(); response.stream.transform(utf8.decoder).listen((value) { print('后端返回内容:$value'); }); print(videoFile.path); print('响应状态码:${response.statusCode}'); if (response.statusCode == 200) { print("video uploaded"); } else { print("video upload failed"); } }Xampp后端上传大小限制问题
Xampp默认PHP配置的上传大小上限通常为2M,视频文件极易超出限制导致400错误,修改方法:- 打开Xampp控制面板,点击Apache行的
Config按钮,选择php.ini - 查找并修改以下配置项,数值可根据需要调整(如下为最大允许上传500M):
upload_max_filesize = 500M post_max_size = 500M max_execution_time = 300 max_input_time = 300 - 重启Apache服务后生效
- 打开Xampp控制面板,点击Apache行的
接口地址/请求方法不匹配
确认接口地址http://192.168.1.6:8000/videos/是否正确,部分后端对路由末尾的斜杠有严格校验,可尝试去掉末尾斜杠测试;同时确认接口要求的请求方法确实为POST。
内容的提问来源于stack exchange,提问作者Sutharshan S Shan
相关产品推荐
相关产品推荐

