-from fastapi import FastAPI, Request, Form
+from fastapi import FastAPI, Request, UploadFile, File, BackgroundTasks
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
+from tempfile import NamedTemporaryFile
+import os
+import base64
app = FastAPI()
templates = Jinja2Templates("templates")
return response
-@app.post("/transforminate")
-def transforminate(request: Request, favnum: float = Form(...)):
- output = favnum/3.14159
- context = {"request": request, "output": output}
+@app.post("/result")
+def show_image(request: Request, background_tasks: BackgroundTasks, input_image: UploadFile = File(...)):
+ contents = input_image.file.read()
+ encoded_image = base64.b64encode(contents).decode("utf-8")
+
+ context = {"request": request, "image": encoded_image}
response = templates.TemplateResponse("result.html", context)
-
return response
if __name__ == "__main__":
<!DOCTYPE html>
<html><body>
- <p>Plug in your favorite number and we'll pass it through the useless number transforminator</p>
- <form action="/transforminate" method="post">
- <label for="favnum">Your fav number:</label>
- <input type="number" id="favnum" name="favnum" required>
- <button type="submit">transforminate!</button>
+ <p>Upload your favorite cloud pic !! ☁️☁️</p>
+ <form action="/result" enctype="multipart/form-data" method="post">
+ <label for="cloud-pic">Upload your cloud pic:</label>
+ <input type="file" id="cloud-pic" name="input_image" accept="image/*" required>
+ </br>
+ <button type="submit">Upload</button>
</form>
</body></html>
\ No newline at end of file
<!DOCTYPE html>
<html><body>
- <p>Behold! Your useless number transforimnator-inated number is {{output}} !</p>
+ <p>Wow what a lovely pic !!!</p>
+ <img src="data:image/jpeg;base64,{{image | safe}}" />
<a href="/">Do it again, do it again!</a>
</body></html>
\ No newline at end of file