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

Flask-Ajax多用户请求时生成独立本地JPG文件的实现方案

解决Flask路由每次保存独立图片文件的问题

你的代码目前固定使用decoded_image.jpeg作为文件名,每次请求都会覆盖之前的文件。要实现每次访问生成独立文件,核心是生成唯一的文件名,下面给两种简单可靠的实现方式:

方法一:用UUID生成唯一文件名

UUID(通用唯一识别码)能生成几乎不会重复的字符串,适合用来做唯一文件名。

修改后的完整代码:

from flask import Flask, request
import base64
import uuid

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'GET':
        text = request.args.get("image")
        if not text:  # 增加空值判断,避免无图片数据时报错
            return "No image data received", 400
        
        # 生成无横杠的UUID作为文件名前缀
        unique_filename = f"{uuid.uuid4().hex}.jpeg"
        
        base64_img_bytes = text.encode('utf-8')
        with open(unique_filename, 'wb') as file_to_save:
            decoded_image_data = base64.decodebytes(base64_img_bytes)
            file_to_save.write(decoded_image_data)
        return f"Image saved as {unique_filename}"

方法二:用时间戳生成唯一文件名

利用当前精确到微秒的时间戳作为文件名,确保每次请求的文件名都不同,还能直观看出文件生成时间。

修改后的完整代码:

from flask import Flask, request
import base64
import datetime

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'GET':
        text = request.args.get("image")
        if not text:  # 增加空值判断,避免无图片数据时报错
            return "No image data received", 400
        
        # 生成带微秒的时间戳文件名
        timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
        unique_filename = f"{timestamp}.jpeg"
        
        base64_img_bytes = text.encode('utf-8')
        with open(unique_filename, 'wb') as file_to_save:
            decoded_image_data = base64.decodebytes(base64_img_bytes)
            file_to_save.write(decoded_image_data)
        return f"Image saved as {unique_filename}"

补充说明

  • 两种方法都能避免文件覆盖:UUID适合需要绝对唯一标识的场景,时间戳则兼顾唯一性和可追溯性。
  • 新增的空值判断能避免前端未传image参数时,后续代码出现异常。
  • 确保Flask应用所在目录有文件写入权限,否则会保存失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:20:17