当没有文件上传时,如何修复烧瓶中的上载错误



我有一个相当基本的引导表单,其中包括一个文件上传,在后端上通过Python,Flask,Blask-Uplask-Uploads处理,并插入MongoDB数据库。当我测试在字段中未包含文件的情况下提交表单时,即使我的代码中有failSafe在flofs-uploads中都会获得上载notallow的错误。

我在我的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.uploadnotlowered

当我尝试提交表单并确实包括图像时,它会完美提交并插入我期望的所有数据中的所有数据。

弄清楚了这一点 - 事实证明我需要在我的if语句中使用以下内容:

if 'image' in request.form:

而不是:

if 'image' in request.files:

如此小的事情,这么大的头痛!

相关内容