Working flask server with simple image upload

This commit is contained in:
TT-392 2024-09-14 15:29:37 +02:00
parent d6c4bab52e
commit a6163cff0a
4 changed files with 103 additions and 0 deletions

3
.gitignore vendored
View file

@ -1 +1,4 @@
*.so *.so
*.swp
*/__pycache__
flask/static

46
flask/app.py Normal file
View file

@ -0,0 +1,46 @@
from flask import Flask, render_template, request, redirect, url_for
from PIL import Image
import os
valid_height=800
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'static/uploads'
# Ensure the upload directory exists
if not os.path.exists(app.config['UPLOAD_FOLDER']):
os.makedirs(app.config['UPLOAD_FOLDER'])
@app.route('/', methods=['GET', 'POST'])
def upload_image():
if request.method == 'POST':
if 'image' not in request.files:
return redirect(request.url)
file = request.files['image']
if file.filename == '':
return redirect(request.url)
if file:
extension = os.path.splitext(file.filename)[1]
filepath = os.path.join(app.config['UPLOAD_FOLDER'], "upload" + extension)
file.save(filepath)
# Process image #
height = Image.open(filepath).height
valid = False
if height == valid_height:
valid = True
#################
return render_template('image.html', filename="upload"+extension, height=height, valid=valid)
return render_template('image.html', filename=None)
@app.route('/uploads/<filename>')
def uploaded_file(filename):
return redirect(url_for('static', filename='uploads/' + filename))
if __name__ == "__main__":
app.run(debug=True)

35
flask/templates/base.html Normal file
View file

@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image Upload</title>
<style>
.container {
display: flex;
width: 100%;
}
.box {
flex: 1;
background-color: lightgray;
text-align: center;
margin: 1px;
}
</style>
</head>
<body>
<div class="container">
<div class="box">Text</div>
<div class="box">Image</div>
<div class="box">QR</div>
<div class="box">Barcode</div>
</div>
{% block content %}
{% endblock %}
</body>
</html>

View file

@ -0,0 +1,19 @@
{% extends "base.html" %}
{% block content %}
<h1>Upload Image</h1>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="Upload">
</form>
{% if filename %}
<h2>Uploaded Image:</h2>
<img src="{{ url_for('uploaded_file', filename=filename) }}" alt="Uploaded Image" style="max-width:300px;">
{% if valid %}
<p style="color: green;">Height: {{ height }} px</p>
{% else %}
<p style="color: red;">Height: {{ height }} px</p>
{% endif %}
{% endif %}
{% endblock %}