flask kullanıyorum ve sadece makinemde (yerel sunucu) çalışan hızlı başlangıç öğreticisini kullanarak çok basit bir şey yapmaya çalışıyorum. Bir görüntü dosyasını başarıyla yükleyen basit bir yükleme formu üretiyorum. Daha sonra bu resmi bir sayfa içinde görüntülemek için template.html
değişkenine bir değişken olarak aktarmak istiyorum. template.html
dosyası düzgün görüntülenir, ancak görüntü her zaman broken link image symbol
olur. Bir dizi farklı yol denedim, ama bir şeyler yapıyorum biraz yanlış yapıyorum.Yüklenmiş görüntüyü Flask'ta template.html'ye aktarma
import os
from flask import Flask, request, redirect, url_for, send_from_directory,
render_template
UPLOAD_FOLDER = '/home/me/Desktop/projects/flask/uploads'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return redirect(url_for('uploaded_file', filename=filename))
return '''
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>
'''
@app.route('/uploads/<filename>')
def uploaded_file(filename):
filename = 'http://127.0.0.1:5000/uploads/' + filename
return render_template('template.html', filename = filename)
if __name__ == '__main__':
app.run()
Bu template.html
geçerli:
<!doctype html>
<title>Hello from Flask</title>
{% if filename %}
<h1>some text<img src="{{filename}}"> more text!</h1>
{% else %}
<h1>no image for whatever reason</h1>
{% endif %}
Ben template.html
yüklenen görüntü dosyasını geçebilir Nasıl yani doğru gösterecektir? Şimdi ne oluyor
Teşekkür
bakacağız ama send_file zaman her bununla denilen sonun py dosyasında
from werkzeug import secure_filename
bu eksik ilave? – Uzebeckatrente@Uzebeckatrente, şablondaki "" etiketi "/ uploads/" ifadesine yönlendirilir ve bu da send_file öğesine yönlendirilir. –
Miikka
Merhaba @Miikka Bunu bulut sunucusunda deniyorum. Aynı mantık benim için çalışmıyor. Src etiketinin içinde tam görüntü yolunu gösterir. Bir şey önerebilir misin lütfen? –