【问题标题】:How to fix UploadNotAllowed error in Flask when no file is uploaded?没有文件上传时如何修复 Flask 中的 UploadNotAllowed 错误?
【发布时间】:2019-08-01 20:05:14
【问题描述】:

我有一个相当基本的 Bootstrap 表单,其中包括一个文件上传,它在后端通过 Python、Flask、Flask-Uploads 处理并插入到 MongoDB 数据库中。当我在字段中不包含文件的情况下测试提交表单时,我从 Flask-Uploads 收到 UploadNotAllowed 错误,即使我的代码中有故障保护功能,如果不包含文件,则默认为静态图像。

我在我的 Python 代码中包含了一个 if 语句,据我所知,它应该在“insert_one”函数中包含一个默认图像,它将数据从表单移动到数据库,但这几乎就像那个语句运行代码时被忽略。

以下是我的 Python 代码的相关部分(为简洁起见,删除了一些部分):

import os, datafunctions
from flask import Flask, render_template, url_for, request, session, redirect, flash
from flask_pymongo import PyMongo, pymongo
from bson.objectid import ObjectId
from werkzeug.security import generate_password_hash, check_password_hash
# Adding flask_uploads to allow custom recipe images to be uploaded by users
from flask_uploads import UploadSet, configure_uploads, IMAGES

# Flask_uploads configuration for image uploads
images = UploadSet('images', IMAGES)
app.config['UPLOADED_IMAGES_DEST'] = 'static/images/uploads'
configure_uploads(app, images)

# Insert recipe to database
@app.route('/insert_recipe', methods=['POST'])
def insert_recipe():
    # Upload image to uploads folder and generate filepath
if 'image' in request.files:
    filename = images.save(request.files['image'])
    filepath = '../static/images/uploads/' + filename
else:
    filepath = '../static/images/default.jpg'
# Submits to temp_recipes collection to allow for preview without displaying in recipe-results
temp_recipes = mongo.db.temp_recipes
new_recipe = temp_recipes.insert_one(
    {
    'image': filepath,
    }
)

我的 Bootstrap 表单中的文件输入字段:

<div class="input-group">
    <div class="input-group-prepend">
        <span class="input-group-text" id="inputGroupFileAddon01">Upload</span>
    </div>
    <div class="custom-file">
        <input type="file" class="custom-file-input" id="image" name="image" aria-describedby="inputGroupFileAddon01">
        <label class="custom-file-label" for="image">Choose file</label>
    </div>
</div>

当我尝试提交不包含图片的表单时,我收到以下错误:

flask_uploads.UploadNotAllowed

当我尝试提交表单并包含图像时,它完美提交并将我期望的所有数据插入到 MongoDB 数据库中。

【问题讨论】:

    标签: python mongodb flask


    【解决方案1】:

    想出了这一点 - 结果我需要在我的 if 语句中使用以下内容:

    if 'image' in request.form:
    

    而不是:

    if 'image' in request.files:
    

    这么小的事情,这么大的麻烦!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      相关资源
      最近更新 更多