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

Python Flask和sqlalchemy:使用存储在数据库中的路径获取上传的文件,python,flask,flask-sqlalchemy,flask-wtforms,Python,Flask,Flask Sqlalchemy,Flask Wtforms,我正在使用flask和sqlalchemy,在文件上传方面遇到了问题 我正在上传带有表单的文件,并将URL存储到数据库中,以便在页面内部显示它 以下是表单的代码: boxart = request.files['boxart'] if boxart: filename = secure_filename(boxart.filename) boxart_path = os.path.join(app.config['

我正在使用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()
所以我转到我的模板,我可以打印game_son.boxart的内容,并且有文件的完整路径。如果我点击链接,我可以访问,但图像不会显示在标签内

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

    <img src="{{ game_son.boxart_url() }}" />

在模型内部,我定义了一个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)
类游戏(db.Model):
__可搜索\uuuu=['version\u name']
son\u id=db.Column(db.Integer,主键=True)
version\u 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))
缩略图=db.Column(db.String(256))
genre=db.Column(db.String(32))
subgenre=db.Column(db.String(32))
def boxart_url(自身):
返回self.boxart
定义报告(自我):
返回“:%r%”(self.version\u name,self.dad)
页面的视图只是将整个对象(游戏)发送到页面

到达页面的url为:

/主页/已删除\u我的\u pc\u用户/app/media/boxart/image.jpg

编辑: 我只记得我在项目中使用了虚拟环境

是否与chmod有关


提前谢谢

这很奇怪,但我会回答我自己的问题

解决方案很简单,我选择只在数据库中存储文件名

然后,我从
flask.ext.uploads创建了一个到视图的路由,该视图将使用
send\u from\u directory
函数返回文件

@app.route('/boxart/<filename>')
    def uploaded_boxart(filename):
        return send_from_directory(app.config['UPLOAD_FOLDER'],filename)

另外,我认为我的一个错误是将media/文件夹放在app/文件夹中,而不是放在根目录中。因此,我还重新配置了app.config中的
UPLOAD\u文件夹

在模板中显示图像的代码在哪里?您如何从数据库中获取数据?您提供了insert语句,但这无助于我们解决您的问题,因为它没有显示在图像标记中。谢谢。我在问题中补充了更多的信息。如果还有什么,请告诉我。当你查看源代码时,你的img标签的src是什么?那么,当你查看图像并且它工作时,url将是这样的?
<img src="{{ url_for('uploaded_boxart', filename = game_son.boxart)}}" />