【问题标题】:Flask request.files is not in 'file'烧瓶 request.files 不在“文件”中
【发布时间】:2020-11-15 10:07:37
【问题描述】:

我正在使用 Flask Python 将网站与 python 脚本集成。在这样的页面中,用户应该输入一个图像,这个图像被传递给 python 脚本对其进行一些处理。这里的问题是,每当我输入图像时,它就会抛出

“文件”不在 request.files 中

我认为 POST 方法有问题,但我无法得到解决的答案。 烧瓶代码:

UPLOAD_FOLDER = path
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
ALLOWED_EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif']


def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS


@app.route('/services')
def services():
    return render_template('services.html')


@app.route('/services', methods=['POST', 'GET'])
def upload_image():
    if 'file' not in request.files:
        flash('No file part')
        return redirect(request.url)

    file = request.files['file']
    if file.filename == '':
        flash('No image selected for uploading')
        return redirect(request.url)
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        full_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        print('save')
        file.save(full_path)

        # print('upload_image filename: ' + filename)
        flash('Image successfully uploaded and displayed')
        return render_template('services.html', filename=filename)
    else:
        flash('Allowed image types are -> png, jpg, jpeg, gif')
        return redirect(request.url)


@app.route('/services/display/<filename>')
def display_image(filename):
    # print('display_image filename: ' + filename)
    return redirect(url_for('static', filename='uploads/' + filename), code=301)

HTML

<form method="post" action="{{ url_for('upload_image') }}" enctype="multipart/form-data">
    <label for="img" style="margin-bottom: 40px;font-size: 30px">choose image:</label>
    <input type="file" class="form-control col-lg" id="img" autocomplete="off" required name="img">
    <p>
        <input type="submit" value="Submit" name="submit">
    </p>
</form>

【问题讨论】:

    标签: python html web flask


    【解决方案1】:

    &lt;input type="file" class="form-control col-lg" id="img" autocomplete="off" required name="img"&gt;

    应该有name="file" 而不是name="img"

    或者你应该使用 file = request.files['img']

    在您的 Python 代码中。

    name 属性用于区分请求中的文件。

    【讨论】:

    • 哇,非常感谢。最后它起作用了。非常感谢您的帮助。
    猜你喜欢
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2018-12-30
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    相关资源
    最近更新 更多