Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 提供一个配置文件图片,其路径存储在数据库中_Python_Flask_Jinja2 - Fatal编程技术网

Python 提供一个配置文件图片,其路径存储在数据库中

Python 提供一个配置文件图片,其路径存储在数据库中,python,flask,jinja2,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.fi

我正在尝试提供一个配置文件图片,其路径存储在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)
@employees.route('/upload picture/',methods=['GET','POST'])
@需要登录
def上传(全名):
如果不是当前用户,则为员工:
中止(403)
借款人=借款人.query.filter\u by(全名=全名).first()
如果request.method==request.file中的“POST”和“photo”:
profile_pic=photos.save(request.files['photo'])
follower.profile\u pic=profile\u pic
db.session.add(借款人)
db.session.commit()
返回呈现模板('employees/借款人.html',借款人=借款人)
@employees.route(“/uploaded\u profile\u pic/”)
@需要登录
def上传的_配置文件_图片(文件名):
如果不是当前用户,则为员工:
中止(403)
从_目录返回发送_(app.config['UPLOAD_FOLDER'],文件名)
我的模板文件如下:

  {% 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 %}
{%if forrower.profile_pic%}
{%else%}


{%endif%}
问题是我一直在模板上获取一个损坏的图像。

该函数用于将文件永久保存到文件系统中,它不会创建路径。您需要创建特定图像的路径,并将其保存为属性
self.profile\u pic=profile\u pic
,当作为
{{forror.profile\u 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))

如果文件和允许的文件(file.filename):
filename=secure\u文件名(file.filename)
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
该函数用于将文件永久保存到文件系统中,但不会创建路径。您需要创建特定图像的路径,并将其保存为属性
self.profile\u pic=profile\u pic
,当作为
{{forror.profile\u 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))

如果文件和允许的文件(file.filename):
filename=secure\u文件名(file.filename)
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))

很抱歉问这个愚蠢的问题:您确定路径是指向图像的吗?我这样问是因为我的文件不是图像时,我得到了一个损坏的图像。这并不愚蠢。我也怀疑这就是问题所在,但我似乎没有注意到代码中的问题。如果我错了,请纠正我,但这不是路径问题,而不是代码问题吗?我刚刚注意到我的上载路径错误,所以我将其修复为app.config['UPLOADED\u PHOTOS\u DEST']=“app/static/uploades”啊哈!找到这个很好。很抱歉这个愚蠢的问题:你确定路径是到图像的吗?我这样问是因为我的文件不是图像时,我得到了一个损坏的图像。这并不愚蠢。我也怀疑这就是问题所在,但我似乎没有注意到代码中的问题。如果我错了,请纠正我,但这不是路径问题,而不是代码问题吗?我刚刚注意到我的上载路径错误,所以我将其修复为app.config['UPLOADED\u PHOTOS\u DEST']=“app/static/uploades”啊哈!找到这个很好。我如何在不同文件夹中组织我上传的文件正如我在上面向bernie解释的那样,我希望在一个文件夹中组织我的个人资料图片,必要时在其他文件夹中组织其他必要的文档。@Kimaninegwa那么你可以在static下有不同的目录,即
/static/img
/static/docs
并将它们包含在配置中。上传文件时,你必须从视图中选择目的地,比如一个用于图像的按钮和一个用于pdf或文档的按钮。我如何在不同的文件夹中组织我上传的文件正如我在上面向bernie解释的那样,我希望在一个文件夹中整理我的个人资料图片,必要时在其他文件夹中整理其他必要的文档。@Kimanidegwa然后您可以在static下有不同的目录,即
/static/img
/static/docs
,并将它们包括在您的配置中。上传文件时,你必须从视图中选择目的地,比如一个用于图像的按钮和一个用于pdf或文档的按钮。