如何在烧瓶中上传多个文件?

我有一个烧瓶应用程序,用于将用户输入作为图像并运行模型并将其保存在文件夹中,它最初需要一个图像并运行应用程序。但是,我希望我的应用程序拍摄多张图像,在这些图像上运行模型,然后将其保存到文件夹中。有了我在这个 StackOverflow 问题上找到的所有答案:使用 Flask 上传多个文件,它们都不适用于我的用例。请帮助我说明我哪里出错了。这是我的烧瓶文件


from flask import Flask, render_template, url_for, session, redirect, request

from image_initial import Image_tensorflow


app = Flask(__name__)

app.config['SECRET_KEY'] = 'mykeyhere'


@app.route('/', methods =['GET', 'POST'])

def test():

    if "file_urls" not in session:

        session['file_urls'] = []

    file_urls = session['file_urls']

    if(request.method == 'POST'):

        file_obj = request.form['username']

        session['file_urls'] = file_obj

        return redirect(url_for('results'))

    return render_template("test.html")


@app.route('/results')

def results():

    if "file_urls" not in session or session['file_urls']  == []:

        print('session is not created')

        return redirect(url_for('test'))

    file_urls = session['file_urls']

    Image_tensorflow(file_urls,file_urls)

    session.pop('file_urls', None)

    #print(request.form)

    return render_template('results.html', file_urls=file_urls)


if __name__ == "__main__":

    app.run(host='0.0.0.0')

和我的html页面


<form action = "" method = "POST">

            <p>Upload your file here.</p>

            <p>

              <input type='file' name='username' multiple='multiple' class="btn btn-primary"/>

            </p>

            <p>

              <input type='submit' value='Upload' class="btn btn-secondary"/>


            </p>


慕码人8056858
浏览 76回答 1
1回答

翻过高山走不出你

您没有获得文件列表,这就是您没有获得多个文件的原因。您需要从来自用户名输入的表单中访问文件列表。from flask import Flask, render_template, url_for, session, redirect, requestfrom image_initial import Image_tensorflowapp = Flask(__name__, template_folder='templates')app.config['SECRET_KEY'] = 'mykeyhere'@app.route('/', methods=['GET', 'POST'])def test():&nbsp; &nbsp; if "file_urls" not in session:&nbsp; &nbsp; &nbsp; &nbsp; session['file_urls'] = []&nbsp; &nbsp; file_urls = session['file_urls']&nbsp; &nbsp; if request.method == 'POST':&nbsp; &nbsp; &nbsp; &nbsp; file_obj = request.form.getlist("username")&nbsp; &nbsp; &nbsp; &nbsp; session['file_urls'] = file_obj&nbsp; &nbsp; &nbsp; &nbsp; return redirect(url_for('results'))&nbsp; &nbsp; return render_template("test.html")@app.route('/results')def results():&nbsp; &nbsp; if "file_urls" not in session or session['file_urls'] == []:&nbsp; &nbsp; &nbsp; &nbsp; print('session is not created')&nbsp; &nbsp; &nbsp; &nbsp; return redirect(url_for('test'))&nbsp; &nbsp; file_urls = session['file_urls']&nbsp; &nbsp; Image_tensorflow(file_urls, file_urls)&nbsp; &nbsp; session.pop('file_urls', None)&nbsp; &nbsp; return render_template('results.html', file_urls=file_urls)if __name__ == "__main__":&nbsp; &nbsp; app.run(host='0.0.0.0')上面的代码将为您提供文件列表。但是,我还没有对它进行完整的测试,所以如果其他一些东西不起作用,你可能需要做一些修改编辑:在堆栈跟踪中,问题似乎出在行 Image.open(xa) Here xa 是图像列表并且Image.open()不期望列表您可以做的是遍历每个图像并打开它。for img in xa:&nbsp; &nbsp; Image.open(img)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python