首页 > 解决方案 > 如何使用 FlaskForm 在表单中获取输入文件的 mimetype?

问题描述

我正在尝试使用 flask_wtf 在烧瓶中构建文件上传算法来处理上传表单。我的问题是如何获得输入文件的 mimetype。


class FileUploadForm(FlaskForm):
    file = FileField('File', validators=[DataRequired(), Length(min=1)])
    submit = SubmitField('Upload')

@blueprint.route('/upload/', methods=['GET', 'POST'])
def upload():
    form = FileUploadForm()
    if form.validate_on_submit():
        new_file = File(secure_filename(form.file.name), 
                         form.file.read()
                          mimetype=# HERE I NEED TO PASS THE MIMETYPE)
        db.session.add(new_file)
        db.session.commit()
        flash('File uploaded successfully !', 'success')
        return redirect(url_for('view', file_id=new_file.id))
    return render_template('files/upload.html', title='Upload Files')

标签: pythonflaskflask-wtforms

解决方案


好的,我明白了。这是想要它的人的代码。



class FileUploadForm(FlaskForm):
    file = FileField('Choose File', validators=[FileRequired()])
    submit = SubmitField('Upload')


@blueprint.route('/upload/', methods=['GET', 'POST'])
def upload():
    form = FileUploadForm()
    if form.validate_on_submit():
        secure_name = secure_filename(form.file.data.filename)
        new_file = File(secure_name, form.file.data.stream.read(),
                        mime_type=form.file.data.mimetype,
                        length=form.file.data.stream.tell())
        db.session.add(new_file)
        db.session.commit()
        flash('File uploaded successfully !', 'success')
        return redirect(url_for('manager.files.view', file_id=new_file.id))
    return render_template('files/upload.html', form=form, title='Upload Files')



推荐阅读