You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter向Flask发送图片POST请求未被服务器接收问题排查

问题排查:Flutter POST请求未被Flask服务器接收

问题场景

尝试通过HTTP POST请求从Flutter应用向Python Flask项目上传图片,但服务器日志未记录任何POST请求,仅出现一条GET请求的405错误日志。

Flutter客户端代码

ElevatedButton(
    onPressed: () async {
        final ImagePicker _picker = ImagePicker();
        var image = await ImagePicker().pickImage(source: ImageSource.gallery);
        File file = File(image!.path); 
              
        var request = http.MultipartRequest('POST', Uri.parse('http://127.0.0.1:5000/'));
        request.files.add(await http.MultipartFile.fromPath('imagefile', file.path));
        var data = await request.send;

                       
        print("request: " + request.toString());
})

Flutter运行控制台输出

flutter: request: POST http://127.0.0.1:5000/

Flask服务器端代码

from flask import Flask, request

app = Flask(__name__)

@app.route("/", methods=['POST'])
def home():

    if 'imagefile' not in request.files:
        return 'File Not Found'
        
    try:
        imagefile = request.files.get['imagefile']
        
        if imagefile.filename == '':
            return 'No File Selected'

        # 图片处理代码(与当前问题无关)

        return 'Done'
    
    except Exception as e:
        return f'Error: {e}'
    

if __name__ == '__main__':
    app.run()

Flask服务器日志

127.0.0.1 - - [25/Apr/2024 11:51:14] "GET / HTTP/1.1" 405 -

问题原因及修复方案

1. Flutter端请求未真正发送(核心问题)

原代码中request.send少了括号,正确写法是request.send()——这是方法调用,没有括号仅为方法引用,不会执行发送请求的操作。这就是服务器完全没收到POST请求的根本原因。

修改后的Flutter请求发送代码片段:

try {
    var response = await request.send();
    print("响应状态码: ${response.statusCode}");
    if (response.statusCode == 200) {
        print("上传成功");
    }
} catch (e) {
    print("请求发送失败: $e");
}

2. Flask端代码语法错误

服务器端request.files.get['imagefile']存在语法错误,get是方法,需用圆括号调用:request.files.get('imagefile')。若请求成功发送,原写法会导致服务器返回500异常,需提前修正。

3. 补充错误处理逻辑

在Flutter端添加try-catch块,捕获请求发送过程中的异常(如网络连接失败、服务器不可达等),便于后续排查问题。

4. 确认服务器地址有效性

若Flutter运行在真机或模拟器上,127.0.0.1指向设备自身,需替换为电脑的局域网IP(如192.168.x.x),确保设备能访问到Flask服务器。

内容的提问来源于stack exchange,提问作者chgaobt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:03:31