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

Flask如何配置多上传路径 实现文件数量达标后自动切换存储位置

问题根源

  • 核心问题是count变量定义在视图函数内部,每次收到请求都会被重置为0,所以永远满足count < 3的条件,不会触发路径切换逻辑
  • 逻辑结构不合理:请求方法的判断应该放在最外层,避免重复写两次POST判断
  • 分支内的文件参数名错误:else分支取file2,如果前端上传表单只有一个file1字段的话,此处会直接抛出获取不到文件的错误
  • 计数没有持久化存储:如果服务重启、多进程部署,内存中的计数会丢失,阈值判断会失效

修复代码(本地模拟场景用)

# 把计数变量放到视图函数外部,作为全局变量存储
count = 0

@application.route("/uploader" , methods=['GET', 'POST'])
def uploader():
    global count
    if request.method == 'POST':
        f = request.files['file1']
        filename = secure_filename(f.filename)
        if count < 3:
            save_path = os.path.join(application.config['UPLOAD_FOLDER1'], filename)
            count += 1
        else:
            save_path = os.path.join(application.config['UPLOAD_FOLDER2'], filename)
        f.save(save_path)
        return "Uploaded successfully!"
    # 处理GET请求,返回上传表单,不需要可以直接删除
    return '''
    <form method="POST" enctype="multipart/form-data">
        <input type="file" name="file1">
        <input type="submit" value="上传">
    </form>
    '''

生产环境适配说明

如果不是本地临时模拟,需要长期稳定运行,建议把计数存在独立的持久化存储中,比如Redis、本地文件、数据库,避免多进程、服务重启导致计数失效:

  • 可以每次上传后直接查询对应存储目录下的文件数量,和阈值做比对,这样即使服务重启也能准确判断
  • 真实磁盘占满的场景,可以同时校验磁盘剩余空间,超出阈值后自动切换存储路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:27:03