python - 如何将文件对象保存到数据库?- 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)
为常规字段,以便将其存储在数据库中
解决方案
推荐阅读
- ruby-on-rails - Ruby Rails 5.2 验证错误未显示为部分表单
- amazon-web-services - 如何在 Appsync Lambda Resolver 中检索 cognito 识别数据(使用 cdk)
- python - Python crypt() 脚本无法正确编译
- python - pandas 的更改未保存到 csv 输出
- python - JSON 对象必须是 str、bytes 或 bytearray,而不是 list
- python - 如果先前的异常引发错误,是否有办法对相同的错误进行异常处理?
- mysql - 尝试使用 mysql 导入 json 时出现权限被拒绝错误
- azure-blob-storage - Azure DataLake 客户端无法创建目录
- css - 复制 5 色 CSS 渐变
- python - 尝试为 MatchTemplate 调整图像大小并得到:错误:(-215:断言失败)