首页 > 解决方案 > 如何将文件对象保存到数据库?- Python(烧瓶)

问题描述

我正在尝试在我的项目中添加一个附件字段,用户可以在其中上传不同类型的文件,并且每张票都会附加其文件,这是我的代码

class Files(db.Model):
        id = db.Column(db.Integer,primary_key=True)
        description = db.Column(db.String(140),nullable=False)
        file = db.Column(db.LargeBinary)
        timestamp = db.Column(db.DateTime, default=datetime.utcnow)
        author = db.Column(db.Integer, nullable=True)
        ticket_id = db.Column(db.Integer, db.ForeignKey('tickets.id'),nullable=False)

class AddFile(FlaskForm):
       description = StringField('Description',validators=[DataRequired()])
       file = FileField('Files',validators=[FileRequired()])
       submit = SubmitField('Upload')

@app.route('/ticket/<ticket_id>',methods=['GET','POST'])
@login_required
def ticket(ticket_id):
        if fileform.validate_on_submit() and fileform.file.data:
            newFile = Files(description=fileform.description.data,file=fileform.file.data.read(),author = current_user.username)
            db.session.add(newFile)
            db.session.commit()
            flash('Your file has been uploaded.')
            return redirect(url_for('ticket', ticket_id=ticket_id))
        return render_template('ticket.html',ticket=ticket,fileform=fileform,filemodel=filemodel)

当我上传它时,我没有收到任何错误,但是当我打开数据库并检查我的Files列时,它file是空的。我相信我需要以某种方式转换file = db.Column(db.LargeBinary)为常规字段,以便将其存储在数据库中

标签: pythonflask

解决方案


推荐阅读