保存在烧瓶中,跆拳道形式MongoDB的GridFS的文件

问题描述 投票:0回答:1

我使用的是与mongoengine适配器和烧瓶跆拳道沿着烧瓶用户扩展(https://flask-user.readthedocs.io/)创建一个HTML表单可以接受多种文件(图片,MP4)。我们的目标是直接存储使用GridFS的MongoDB中的那些文件,但我不能得到它,而无需先烧瓶服务器上本地存储图像工作...

这里是我的非工作代码:

@bp.route('/video1', methods=['GET', 'POST'])
@login_required
def video1():
    video1Form = Video1Form()
    if request.method == 'POST' and video1Form.validate_on_submit():
        newVideo1 = Video1(
            slogan = video1Form.slogan.data,
            objectif = video1Form.objectif.data,
            stat1 = video1Form.stat1.data,
            stat2 = video1Form.stat2.data
        )
        name = secure_filename(str(current_user.id) + "__" + "logo.png")
        fh = open(video1Form.logo.data, 'rb')
        newVideo1.logo.put(fh, filename=name, content_type = "image/jpeg")
        newVideo1.save()
        return redirect(url_for('video.download'))
    if video1Form.errors:
        flash(video1Form.errors, 'alert-danger')
    return render_template('video/video1.html', video1Form=video1Form)
`

我得到以下错误:

[...]文件 “/home/lucaspierru/Documents/IKADA/sos_sponsors/app/video/routes.py”,第35行,在VIDEO1 FH =开放(video1Form.logo.data, 'RB')

FileNotFoundError:[错误2]没有这样的文件或目录: 'name_of_the_uploaded_file.ext'

是否有可能直接指向该文件的内容,而不是仅仅得到的文件名,而不把它保存在服务器第一?

mongodb flask mongoengine flask-wtforms gridfs
1个回答
0
投票

我发现我的错误:

我忘了给enctype="multipart/form-data"属性添加到我的HTML标签<form>,显然它是需要正确上传文件,否则他们将被视为文本数据。

© www.soinside.com 2019 - 2024. All rights reserved.