import os from flask import Flask, render_template, redirect, request from flask_wtf import FlaskForm from flask_wtf.file import FileAllowed, FileField from wtforms import ( SubmitField, ) # config me here APP = Flask(__name__, static_folder="static") APP.config["IMAGE_FOLDER"] = "static/images" ALLOWED_FILES = ["jpg", "png", "gif", "webp"] # don't config these lines APP.config["SECRET_KEY"] = os.urandom(24) class ImageUploadForm(FlaskForm): """Image upload form.""" allowed = ", ".join(ALLOWED_FILES) image = FileField( "image:", validators=[ FileAllowed( ALLOWED_FILES, f"Images only, please use any of the following file extensions: {allowed}", ) ], ) submit = SubmitField("Submit") def saveimage(image): """Save the image to the folder""" image.save(os.path.join(APP.config["IMAGE_FOLDER"], image.filename)) @APP.route("/", methods=["GET", "POST"]) def index(): """Upload route, a page to upload an image""" imageuploadform = ImageUploadForm() if request.method == "POST": if imageuploadform.validate_on_submit(): saveimage(imageuploadform.image.data) uploaded_files = sorted( [ os.path.join(APP.config["IMAGE_FOLDER"], file) for file in os.listdir(APP.config["IMAGE_FOLDER"]) ], key=os.path.getctime, ) return render_template( "upload.html", imageuploadform=imageuploadform, uploaded_files=uploaded_files ) if __name__ == "__main__": APP.debug = True APP.run(port=5000)