小编Fel*_*ipe的帖子

Flask和sqlalchemy:使用存储在数据库中的路径获取上传的文件

我正在使用flask和sqlalchemy,我遇到了有关文件上传的问题.

我正在使用表单上传文件并将URL存储到数据库中,因此我可以在页面内显示它.

这是表单的代码:

        boxart = request.files['boxart']

        if boxart:
            filename = secure_filename(boxart.filename)
            boxart_path = os.path.join(app.config['UPLOAD_FOLDER']+"boxart/", filename)
            boxart.save(boxart_path)
            game_son.boxart = boxart_path

        db.session.add(game_son)
        db.session.commit()
Run Code Online (Sandbox Code Playgroud)

所以我转到我的模板,我可以打印game_son.boxart的内容,并有文件的完整路径.如果我点击链接,我可以访问,但图像不会显示在标签内...

我尝试使用以下方法在模板上获取它:

    <img src="{{ game_son.boxart_url() }}" />
Run Code Online (Sandbox Code Playgroud)

在模型内部,我定义了一个boxart_url方法,以防我需要在发送之前解析字符串

  class Game_son(db.Model):
    __searchable__ = ['version_name']
    son_id = db.Column(db.Integer, primary_key=True)
    version_name = db.Column(db.String(128), index=True, unique=False)
    son_timestamp = db.Column(db.DateTime)
    dad = db.Column(db.Integer, db.ForeignKey('game_dad.id'))
    console = db.Column(db.Integer, db.ForeignKey('platform.id'))
    boxart = db.Column(db.String(256))
    thumbnail = db.Column(db.String(256))
    genre = db.Column(db.String(32))
    subgenre = db.Column(db.String(32))

    def boxart_url(self):
        return self.boxart 

    def __repr__(self):
        return '<Game %r>: %r' % (self.version_name, self.dad)
Run Code Online (Sandbox Code Playgroud)

页面视图只是将整个对象(游戏)发送到页面. …

python flask flask-sqlalchemy flask-wtforms

7
推荐指数
1
解决办法
4812
查看次数

标签 统计

flask ×1

flask-sqlalchemy ×1

flask-wtforms ×1

python ×1