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

如何在Flask中设置上传照片的存储与读取路径

修改方案

首先在Flask应用初始化部分添加相关配置和依赖导入:

import os
from flask import Flask, request, redirect, url_for, session
from werkzeug.utils import secure_filename
import cv2

app = Flask(__name__)
# 配置上传文件的存储目录,这里设为项目根目录下的uploads文件夹
app.config['UPLOAD_FOLDER'] = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'uploads')
# 允许上传的图片后缀
app.config['ALLOWED_EXTENSIONS'] = {'png', 'jpg', 'jpeg', 'gif'}
# session需要配置密钥才能使用
app.secret_key = 'your_custom_secret_key_here'

# 自动创建上传目录,如果不存在的话
if not os.path.exists(app.config['UPLOAD_FOLDER']):
    os.makedirs(app.config['UPLOAD_FOLDER'])

然后修改上传视图函数,将文件存入指定目录,同时记录上传的文件名:

@app.route('/', methods = ['GET', 'POST'])
def uploader_file():
   if request.method == 'POST':
      f = request.files['file']
      # 校验文件名合法
      if f and secure_filename(f.filename).rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS']:
          filename = secure_filename(f.filename)
          save_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
          f.save(save_path)
          # 将上传的文件名存入session,方便后续路由读取
          session['uploaded_image'] = filename
          return redirect(url_for('test'))
      # 非法文件的处理逻辑可以自己补充
      return "不支持的文件格式"

最后替换原有的硬编码绝对路径,读取上传的图片:

# 先判断是否有上传的文件
if 'uploaded_image' in session:
    img_path = os.path.join(app.config['UPLOAD_FOLDER'], session['uploaded_image'])
    img = cv2.imread(img_path)
else:
    # 没有上传文件时的 fallback 逻辑,比如读默认图片
    img = cv2.imread("C:\\Users\\20khj\\Desktop\\photo.jpg")

补充注意事项

  • 若存在多用户上传场景,不要直接用原文件名存储,可在文件名前加时间戳、用户id等标识避免重名覆盖
  • 路径拼接统一使用os.path.join,可自动适配Windows、Linux等不同系统的路径分隔符规则
  • Windows系统下如果手动写绝对路径,需要将反斜杠转义(写成\\)或者使用原始字符串(r"C:\xxx\xx.jpg"),否则会出现路径识别错误

内容的提问来源于stack exchange,提问作者김혜진

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:15:02