File Uploading
File upload forms require a different encoding.
HTML form
<form method="post" enctype="multipart/form-data">
<input type="file" name="photo" />
<button type="submit">Upload</button>
</form><form method="post" enctype="multipart/form-data">
<input type="file" name="photo" />
<button type="submit">Upload</button>
</form>Flask route
from flask import Flask, request
app = Flask(__name__)
@app.route("/upload", methods=["GET", "POST"])
def upload():
if request.method == "POST":
file = request.files.get("photo")
if not file:
return "No file uploaded", 400
# saving comes next (see secure filenames)
return "File received", 200
return "Upload form"from flask import Flask, request
app = Flask(__name__)
@app.route("/upload", methods=["GET", "POST"])
def upload():
if request.method == "POST":
file = request.files.get("photo")
if not file:
return "No file uploaded", 400
# saving comes next (see secure filenames)
return "File received", 200
return "Upload form"Why request.form doesn’t contain files
Files are streamed separately and exposed via:
request.filesrequest.files
Common pitfalls
- Forgetting
enctype="multipart/form-data"enctype="multipart/form-data"→ files missing - Not setting size limits
- Accepting any file type blindly
In a real app, validate:
- allowed file extensions
- MIME type
- file size
If this helped you, consider buying me a coffee ☕
Buy me a coffeeWas this page helpful?
Let us know how we did
