File upload processing lets your web app receive files from users. This helps users share images, documents, or other files easily.
File upload processing in Flask
from flask import Flask, request app = Flask(__name__) @app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return 'No file part' file = request.files['file'] if file.filename == '': return 'No selected file' if file: file.save('/path/to/save/' + file.filename) return 'File uploaded successfully'
Use request.files to access uploaded files.
Always check if the file exists and has a filename before saving.
file = request.files['file'] file.save('/uploads/' + file.filename)
if 'file' not in request.files: return 'No file part'
if file.filename == '': return 'No selected file'
This Flask app shows a simple file upload form. When a user picks a file and submits, the file is saved in the 'uploads' folder. The app confirms the upload with a message.
The form uses enctype="multipart/form-data" which is required for file uploads. The input has an ARIA label for accessibility.
from flask import Flask, request, render_template_string import os app = Flask(__name__) UPLOAD_FOLDER = 'uploads' os.makedirs(UPLOAD_FOLDER, exist_ok=True) @app.route('/') def index(): return render_template_string(''' <h1>Upload a File</h1> <form method="POST" action="/upload" enctype="multipart/form-data"> <input type="file" name="file" aria-label="Choose file to upload"> <button type="submit">Upload</button> </form> ''') @app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return 'No file part' file = request.files['file'] if file.filename == '': return 'No selected file' filepath = os.path.join(UPLOAD_FOLDER, file.filename) file.save(filepath) return f'File "{file.filename}" uploaded successfully!' if __name__ == '__main__': app.run(debug=True)
Always set enctype="multipart/form-data" in your HTML form to enable file uploads.
Use secure file names or sanitize them to avoid security risks.
Make sure the upload folder exists and your app has permission to write there.
File upload processing lets users send files to your Flask app.
Use request.files to get the uploaded file and save it safely.
Always check for file presence and valid filename before saving.
Practice
request.files in Flask represent when handling file uploads?Solution
Step 1: Understand
It holds files sent by the client in a dictionary-like object where keys are input names.request.filesroleStep 2: Differentiate from other request parts
Unlike form fields inrequest.form,request.filesspecifically contains uploaded files.Final Answer:
A dictionary-like object containing uploaded files -> Option AQuick Check:
Files = dictionary-like object [OK]
- Confusing
request.fileswithrequest.form - Expecting a list instead of a dictionary-like object
- Thinking it automatically saves files
Solution
Step 1: Check file presence in
Userequest.files'file' in request.filesto confirm the file input exists.Step 2: Verify filename is not empty
Checkrequest.files['file'].filename != ''to ensure a file was selected.Final Answer:
if 'file' in request.files and request.files['file'].filename != '' -> Option BQuick Check:
Check key and filename not empty [OK]
- Checking
request.forminstead ofrequest.files - Using
is Noneinstead of checking filename - Comparing filename directly to None
file = request.files['photo']
filename = secure_filename(file.filename)
file.save(f"uploads/{filename}")
return f"Saved {filename}"What will be the output if a user uploads a file named
my cat.png?Solution
Step 1: Understand
This function replaces spaces with underscores and removes unsafe characters.secure_filenameeffectStep 2: Apply to 'my cat.png'
The filename becomes 'my_cat.png' after sanitization.Final Answer:
Saved my_cat.png -> Option CQuick Check:
Spaces replaced by underscores in filename [OK]
- Assuming spaces remain in filename
- Expecting filename unchanged
- Thinking spaces cause save error
file = request.files['file'] file.save(file.filename) return 'File saved!'
Solution
Step 1: Identify filename safety issue
Usingfile.filenamedirectly can allow unsafe paths or characters.Step 2: Recommend using
To avoid security risks, filenames must be sanitized before saving.secure_filenameFinal Answer:
It uses an unsafe filename directly -> Option DQuick Check:
Always sanitize filenames before saving [OK]
- Not checking if file exists before saving
- Saving files without sanitizing filename
- Confusing
request.formwithrequest.files
Solution
Step 1: Check file presence and extension
file = request.files['image'] if file and file.filename.endswith('.png'): filename = secure_filename(file.filename) file.save(f"uploads/{filename}") return 'PNG saved' else: return 'Invalid file' checks if file exists and filename ends with '.png' to allow only PNG files.Step 2: Use
It sanitizes the filename to prevent security issues before saving.secure_filenamebefore savingStep 3: Return appropriate messages
Returns confirmation if saved, else an invalid file message.Final Answer:
Option A correctly checks extension and uses secure_filename -> Option AQuick Check:
Check extension + secure filename + save [OK]
- Not sanitizing filename before saving
- Not checking file extension properly
- Saving files without checking if uploaded
Ready to prove it?
Pass the test and this pattern moves unknown
