在 Flask HTML 模板中显示临时文件图像?

问题描述

我正在尝试制作一个两步验证系统,我想在注册页面显示一个二维码用户扫描,然后立即删除图像。

这是我目前想到的:

@app.route('/register',methods = ['POST','GET'])
def register():
    with tempfile.NamedTemporaryFile(suffix=".png",dir="static/images") as qrimg:
        form = RegisterForm(request.form)

        username = form.username.data
        password = form.password.data
        twofactorpass = form.twofactor.data

        twofactor = pyotp.random_base32()
        twofactorkey = pyotp.TOTP(twofactor)
        qrstring = twofactorkey.provisioning_uri(name='x',issuer_name="x")
        qr = qrcode.make(qrstring)
    
        qr.save(qrimg)

        if request.method == "POST" and form.validate():        
            if twofactorpass == twofactorkey.Now():
                return redirect(url_for("register"))
            else:
                return redirect(url_for("register"))

        return render_template("register.html",form = form,img = os.path.basename(os.path.normpath(qrimg.name)))

我现在的问题是临时文件在呈现 HTML 之前删除了自己,但据我所知,“返回 render_template()”部分必须在最后。

那么有什么办法可以在 HTML 呈现后关闭临时文件?我愿意接受任何建议,因为我猜有更好的方法可以做到这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)