Bird
Raised Fist0
Flaskframework~20 mins

File upload processing in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
File Upload Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output when uploading a file with this Flask route?

Consider this Flask route that handles file uploads. What will the response be if a user uploads a file named example.txt?

Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files.get('file')
    if file:
        filename = file.filename
        return f'File {filename} uploaded successfully'
    return 'No file uploaded'
AFile None uploaded successfully
BNo file uploaded
CInternal Server Error
DFile example.txt uploaded successfully
Attempts:
2 left
💡 Hint

Check how the file is accessed from the request and what attribute is used for the filename.

📝 Syntax
intermediate
2:00remaining
Which option correctly saves an uploaded file in Flask?

Given a Flask route receiving a file upload, which code snippet correctly saves the file to the uploads/ folder?

Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files.get('file')
    if file:
        # Save file here
        pass
    return 'No file uploaded'
Asave(file, 'uploads/' + file.filename)
Bfile.save('uploads/' + file.filename)
Cfile.write('uploads/' + file.filename)
Dfile.store('uploads/' + file.filename)
Attempts:
2 left
💡 Hint

Look for the method provided by Flask's FileStorage object to save files.

🔧 Debug
advanced
2:00remaining
Why does this Flask file upload code raise a KeyError?

Examine this Flask route snippet. Why does it raise a KeyError when no file is uploaded?

Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    if file:
        return f'Uploaded {file.filename}'
    return 'No file uploaded'
ABecause <code>request.files['file']</code> raises KeyError if 'file' key is missing
BBecause <code>file.filename</code> is None
CBecause the route does not allow POST method
DBecause <code>request.files</code> is always empty
Attempts:
2 left
💡 Hint

Consider how dictionary access works in Python when a key is missing.

❓ state_output
advanced
2:00remaining
What is the value of filename after this Flask upload code runs?

Given this Flask route, what will be the value of filename if the user uploads a file named photo.png?

Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files.get('file')
    filename = file.filename if file else 'No file'
    return filename
Aphoto.png
BNo file
CNone
Dfile
Attempts:
2 left
💡 Hint

Check the conditional expression assigning filename.

🧠 Conceptual
expert
3:00remaining
Which Flask configuration is essential to securely handle file uploads?

When building a Flask app that accepts file uploads, which configuration helps prevent security risks by limiting the size of uploaded files?

Aapp.config['SECRET_KEY'] = 'mysecret'
Bapp.config['UPLOAD_FOLDER'] = '/tmp/uploads'
Capp.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
Dapp.config['DEBUG'] = True
Attempts:
2 left
💡 Hint

Think about how to limit the size of incoming data to avoid large file uploads.

Practice

(1/5)
1. What does request.files in Flask represent when handling file uploads?
easy
A. A dictionary-like object containing uploaded files
B. A list of all form fields submitted
C. A string with the file path on the server
D. A function to save files automatically

Solution

  1. Step 1: Understand request.files role

    It holds files sent by the client in a dictionary-like object where keys are input names.
  2. Step 2: Differentiate from other request parts

    Unlike form fields in request.form, request.files specifically contains uploaded files.
  3. Final Answer:

    A dictionary-like object containing uploaded files -> Option A
  4. Quick Check:

    Files = dictionary-like object [OK]
Hint: Remember: files come in a dictionary, not a list or string [OK]
Common Mistakes:
  • Confusing request.files with request.form
  • Expecting a list instead of a dictionary-like object
  • Thinking it automatically saves files
2. Which of the following is the correct way to check if a file was uploaded in Flask?
easy
A. if request.files.filename == ''
B. if 'file' in request.files and request.files['file'].filename != ''
C. if request.form['file'] != None
D. if request.files['file'] is None

Solution

  1. Step 1: Check file presence in request.files

    Use 'file' in request.files to confirm the file input exists.
  2. Step 2: Verify filename is not empty

    Check request.files['file'].filename != '' to ensure a file was selected.
  3. Final Answer:

    if 'file' in request.files and request.files['file'].filename != '' -> Option B
  4. Quick Check:

    Check key and filename not empty [OK]
Hint: Check key exists and filename is not empty string [OK]
Common Mistakes:
  • Checking request.form instead of request.files
  • Using is None instead of checking filename
  • Comparing filename directly to None
3. Given this Flask code snippet:
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?
medium
A. Saved mycat.png
B. Saved my cat.png
C. Saved my_cat.png
D. Error due to spaces in filename

Solution

  1. Step 1: Understand secure_filename effect

    This function replaces spaces with underscores and removes unsafe characters.
  2. Step 2: Apply to 'my cat.png'

    The filename becomes 'my_cat.png' after sanitization.
  3. Final Answer:

    Saved my_cat.png -> Option C
  4. Quick Check:

    Spaces replaced by underscores in filename [OK]
Hint: Remember secure_filename replaces spaces with underscores [OK]
Common Mistakes:
  • Assuming spaces remain in filename
  • Expecting filename unchanged
  • Thinking spaces cause save error
4. What is wrong with this Flask file upload code?
file = request.files['file']
file.save(file.filename)
return 'File saved!'
medium
A. It does not check if a file was uploaded
B. It saves file to a wrong directory
C. It should use request.form instead of request.files
D. It uses an unsafe filename directly

Solution

  1. Step 1: Identify filename safety issue

    Using file.filename directly can allow unsafe paths or characters.
  2. Step 2: Recommend using secure_filename

    To avoid security risks, filenames must be sanitized before saving.
  3. Final Answer:

    It uses an unsafe filename directly -> Option D
  4. Quick Check:

    Always sanitize filenames before saving [OK]
Hint: Always use secure_filename before saving files [OK]
Common Mistakes:
  • Not checking if file exists before saving
  • Saving files without sanitizing filename
  • Confusing request.form with request.files
5. You want to allow users to upload only PNG images and save them safely in Flask. Which code snippet correctly implements this?
hard
A. 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'
B. file = request.files['image'] if file.filename: file.save(file.filename) return 'File saved' else: return 'No file'
C. file = request.files.get('image') if file and file.filename: filename = secure_filename(file.filename) file.save(f"uploads/{filename}") return 'File saved' else: return 'No file uploaded'
D. file = request.files['image'] if file and file.filename.endswith('.png'): file.save(file.filename) return 'PNG saved' else: return 'Invalid file'

Solution

  1. 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.
  2. Step 2: Use secure_filename before saving

    It sanitizes the filename to prevent security issues before saving.
  3. Step 3: Return appropriate messages

    Returns confirmation if saved, else an invalid file message.
  4. Final Answer:

    Option A correctly checks extension and uses secure_filename -> Option A
  5. Quick Check:

    Check extension + secure filename + save [OK]
Hint: Check extension and sanitize filename before saving [OK]
Common Mistakes:
  • Not sanitizing filename before saving
  • Not checking file extension properly
  • Saving files without checking if uploaded
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard