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

如何向Flask服务端上传多张图片并解决请求连接报错问题

问题修复说明
  • 客户端请求URL格式错误(直接触发连接报错的核心原因)
    你编写的url = 'http://127.0.0.1:/8070/img_d'中端口标识格式完全错误,冒号后多了斜杠,导致requests无法识别8070端口,默认请求80端口,和你服务端实际监听的8070端口不一致,因此抛出连接拒绝报错。
    修复后正确写法:

    url = 'http://127.0.0.1:8070/img_d'
    
  • 服务端导入逻辑完全错误
    from app import Res是无效写法:

    1. Res是客户端脚本的变量,服务端和客户端是独立运行的两个进程,无法直接跨进程导入变量
    2. 如果你的Flask脚本文件名为app.py,这行代码会造成循环导入,直接触发运行错误
      直接删除这行导入代码即可,服务端接收上传文件需要用Flask自带的request.files对象。
  • /img_d接口逻辑错误
    原接口尝试返回不存在的Res变量,正确的接收、保存图片逻辑如下:

    import os
    @app.route('/img_d', methods=['POST'])
    def receive_img():
        # 获取所有上传的img字段文件
        imgs = request.files.getlist('img')
        save_paths = []
        for img in imgs:
            if img.filename:
                save_path = os.path.join(app.config['UPLOAD_FOLDER'], img.filename)
                img.save(save_path)
                save_paths.append(save_path)
        return jsonify({"status": "success", "saved_images": save_paths})
    
  • 客户端上传逻辑冗余可优化
    原代码for v, k in enumerate(dd)中的enumerate没有实际作用,可简化为:

    mul_img = []
    for img_name in dd['img']:
        mul_img.append(('img', open(img_name, 'rb')))
    

    注意上传完成后要手动关闭打开的文件句柄,避免资源泄漏。

  • 额外注意事项
    不要将客户端请求代码和服务端启动代码写在同一个文件中,服务端启动前如果执行了客户端的post请求,会因为服务端未启动完成触发连接拒绝报错,客户端代码需要单独写在另一个py文件中,等服务端启动完成后再运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:54:03