使用Flask Python提供其路径存储在数据库中的个人资料图片

时间:2016-07-28 15:44:24

标签: python flask jinja2

我正在尝试提供其路径存储在sqlalchemy数据库中的个人资料图片。

代码段为:

@employees.route('/upload-picture/<full_name>', methods=['GET', 'POST'])
@login_required
def upload(full_name):
    if not current_user.is_employee:
        abort(403)
    borrower = Borrower.query.filter_by(full_name=full_name).first()
    if request.method == 'POST' and 'photo' in request.files:
    profile_pic = photos.save(request.files['photo'])
        borrower.profile_pic = profile_pic
        db.session.add(borrower)
        db.session.commit()
    return render_template('employees/borrower.html', borrower=borrower)

@employees.route('/uploaded_profile_pic/<filename>')
@login_required
def uploaded_profile_pic(filename):
    if not current_user.is_employee:
        abort(403)
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

我的模板文件如下:

  {% if borrower.profile_pic %}
        <img src="{{ url_for('employees.uploaded_profile_pic', filename = borrower.profile_pic)}}" />
    {% else %}
    <form action="{{url_for('employees.upload', full_name=borrower.full_name)}}" method="POST" enctype="multipart/form-data">
    <input type="file" name="photo"><br /><br />
    <input type="submit" value="Upload">
    </form>
    {% endif %}

问题是我在模板上不断出现图像损坏。

1 个答案:

答案 0 :(得分:0)

save函数用于将文件永久保存到文件系统,但不会创建路径。您需要创建特定图像的路径并将其另存为属性self.profile_pic = profile_pic,当{{ borrower.profile_pic }}访问时,该属性将返回图像路径。

<img src="{{ borrower.profile_pic }}">  

if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))