2016-07-28 72 views
1

パスがsqlalchemyデータベースに保存されているプロフィール画像を提供しようとしています。Flask Pythonでデータベースにパスが保存されているプロフィール画像を提供

スニペットコードは、次のように

@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 %} 

問題は、私はテンプレートに壊れた画像を取得しておくです。

+0

愚かな質問を申し訳ありません:あなたはパスが画像になっていますか?私のファイルが画像ではないときに壊れた画像が得られたので私は尋ねます。 – bernie

+0

それは愚かではありません。私もそれが問題だと思うが、私はコード内の問題に気づいていないようだ。 –

+1

私が間違っていても、パスで問題ではなく、コードでは問題にならないのであれば、私を訂正してください。 – bernie

答えて

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)) 
+0

アップロードしたファイルを別のフォルダに整理する方法 –

+0

@KimaniNdegwaわかりません。 – roy

+0

私は上のbernieに説明したように、必要に応じて、自分のプロフィール画像を1つのフォルダにまとめ、他の必要な文書を他のフォルダに整理したいと考えています。 –

関連する問題