Загрузить изображение в Flask
Мне нужно загрузить некоторые изображения в статическую папку моего каталога проекта, но я не знаю, как сказать это моему коду. В следующем коде.py я могу загрузить изображение и сохранить его в каталоге проекта на том же уровне статической папки, но я бы хотел, чтобы это изображение могло хранить старую папку INSIDE.
@app.route('/uploader', methods = ['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['file']
f.save(secure_filename(f.filename))
return render_template('end.html')
Что мне нужно сделать?? Спасибо, парни
Ответы
Ответ 1
вам нужно определить upload folder
из документации flask
import os
from flask import Flask, request, redirect, url_for
from werkzeug.utils import secure_filename
UPLOAD_FOLDER = '/path/to/the/uploads'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def upload_file():
if request.method == 'POST':
# check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
# if user does not select file, browser also
# submit a empty part without filename
if file.filename == '':
flash('No selected file')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
https://flask.palletsprojects.com/en/1.1.x/patterns/fileuploads/
Таким образом, ваш код будет UPLOAD_FOLDER = '/path/to/static/images'
или что-то в этом роде
Ответ 2
Прежде всего установите:
pip install Flask-Uploads
Затем в вашем основном файле (app.py) напишите код для загрузки конфигураций изображений:
from flask import Flask, render_template, request
from flask.ext.uploads import UploadSet, configure_uploads, IMAGES
app = Flask(__name__)
photos = UploadSet('photos', IMAGES)
app.config['UPLOADED_PHOTOS_DEST'] = 'static/img'
configure_uploads(app, photos)
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST' and 'photo' in request.files:
filename = photos.save(request.files['photo'])
return filename
return render_template('upload.html')
if __name__ == '__main__':
app.run(debug=True)
затем напишите html для загрузки изображения:
<html>
<head>
<title>Upload</title>
</head>
<body>
<form method=POST enctype=multipart/form-data action="{{ url_for('upload') }}">
<input type=file name=photo>
<input type="submit">
</form>
</body>
</html>
Запустите сервер и загрузите изображение. Загрузка изображений будет сохранена в папке static/img.
Ответ 3
Попробуйте сначала сохранить изображение JPEG или JPG в статической папке
внутри статической папки изображение хранится
затем в HTML файл
<img src="{{url_for('static', filename='Hermes.png')}}" align="middle" />
добавить эту строку кода
В app.py код
from flask import Flask, render_template, redirect, url_for, request
# Route for handling the login page logic
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
return render_template('home.html')
@app.route('/register')
def register():
return render_template('register.html')
@app.route('/registerV')
def registerV():
return render_template('registerV.html')
В register.html код
<html>
<head>
</head>
<body>
<div class="bd-example" align="middle">
<img src="{{url_for('static', filename='Hermes.png')}}" align="middle" />
</div>
</body>
</html>