2016-07-28 28 views
1

Ich versuche, ein Profilbild, dessen Pfad in der SQL-Datenbank gespeichert ist.Serve ein Profilbild, dessen Pfad in der Datenbank mit Flask Python gespeichert wird

Das Snippet-Code ist:

@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) 

Meine Template-Datei ist wie folgt:

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

Das Problem ist, halte ich auf die Vorlage ein gebrochenes Bild zu bekommen.

+0

Sorry für die dumme Frage: Sind Sie sicher, dass der Pfad zu einem Bild ist? Ich frage, weil ich ein defektes Bild bekommen habe, als meine Datei kein Bild war. – bernie

+0

Es ist nicht dumm. Ich vermute auch, dass das Problem ist, aber ich kann das Problem innerhalb des Codes nicht bemerken. –

+1

Korrigieren Sie mich, wenn ich falsch liege, aber wäre das nicht ein Problem mit dem Pfad und nicht mit dem Code? – bernie

Antwort

0

Die save Funktion wird verwendet, um die Datei dauerhaft in Ihrem Dateisystem zu speichern, es erstellt den Pfad nicht. Sie müssen den Pfad zu einem bestimmten Bild erstellen und es als Attribut self.profile_pic = profile_pic speichern, das den Bildpfad zurückgibt, wenn auf es als {{ borrower.profile_pic }} zugegriffen wird.

<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

Wie organisiere ich meine hochgeladenen Dateien in verschiedenen Ordnern –

+0

@KimaniNdegwa Ich verstehe es nicht. – roy

+0

Wie ich oben zu bernie erklärt habe, möchte ich meine Profilbilder in einem Ordner und anderen notwendigen Dokumenten in anderen Ordnern nach Bedarf organisieren. –