Bird
Raised Fist0
FastAPIframework~20 mins

File responses in FastAPI - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
File Response Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What does this FastAPI endpoint return?
Consider this FastAPI endpoint that uses FileResponse to send a file to the client. What will the client receive when accessing this endpoint?
FastAPI
from fastapi import FastAPI
from fastapi.responses import FileResponse

app = FastAPI()

@app.get('/download')
async def download_file():
    return FileResponse('example.txt', media_type='text/plain', filename='downloaded.txt')
AThe client downloads the file 'example.txt' but it is saved as 'downloaded.txt' on the client side.
BThe client gets a JSON response describing the file 'example.txt'.
CThe client receives the content of 'example.txt' displayed as plain text in the browser.
DThe client receives a 404 error because FileResponse cannot find 'example.txt'.
Attempts:
2 left
💡 Hint
Think about what the filename parameter does in FileResponse.
📝 Syntax
intermediate
2:00remaining
Identify the syntax error in this FastAPI file response code
Which option contains a syntax error that will prevent the FastAPI app from running?
FastAPI
from fastapi import FastAPI
from fastapi.responses import FileResponse

app = FastAPI()

@app.get('/file')
async def get_file():
    return FileResponse('data.csv', media_type='text/csv', filename='data.csv')
Areturn FileResponse('data.csv')
Breturn FileResponse('data.csv', media_type='text/csv', filename='data.csv')
Creturn FileResponse('data.csv', media_type='text/csv')
Dreturn FileResponse('data.csv', media_type='text/csv' filename='data.csv')
Attempts:
2 left
💡 Hint
Look carefully at the commas between arguments.
🔧 Debug
advanced
2:00remaining
Why does this FastAPI FileResponse raise a FileNotFoundError?
This FastAPI endpoint raises a FileNotFoundError when accessed. What is the most likely cause?
FastAPI
from fastapi import FastAPI
from fastapi.responses import FileResponse

app = FastAPI()

@app.get('/getfile')
async def get_file():
    return FileResponse('files/report.pdf')
AThe file 'files/report.pdf' does not exist at the specified path.
BFileResponse requires an absolute path, relative paths cause FileNotFoundError.
CThe media_type parameter is missing, causing the error.
DFastAPI does not support serving PDF files with FileResponse.
Attempts:
2 left
💡 Hint
Check if the file path is correct and the file exists.
❓ state_output
advanced
2:00remaining
What is the Content-Disposition header value sent by this FileResponse?
Given this FastAPI endpoint, what will be the exact Content-Disposition header value in the HTTP response?
FastAPI
from fastapi import FastAPI
from fastapi.responses import FileResponse

app = FastAPI()

@app.get('/download')
async def download():
    return FileResponse('image.png', filename='picture.png')
Ainline; filename=image.png
Battachment; filename=picture.png
Cattachment; filename=image.png
Dinline; filename=picture.png
Attempts:
2 left
💡 Hint
FileResponse sets Content-Disposition to attachment by default when filename is provided.
🧠 Conceptual
expert
3:00remaining
Which option correctly streams a large file efficiently with FastAPI?
You want to serve a very large file without loading it fully into memory. Which FastAPI FileResponse usage is best for this?
Areturn FileResponse('largefile.zip')
Breturn FileResponse(open('largefile.zip', 'rb'))
Creturn FileResponse('largefile.zip', media_type='application/zip', filename='largefile.zip')
Dreturn FileResponse('largefile.zip', chunk_size=1024*1024)
Attempts:
2 left
💡 Hint
Consider how FileResponse handles file streaming and metadata.

Practice

(1/5)
1. What is the main purpose of FileResponse in FastAPI?
easy
A. To send files from the server to the client
B. To upload files from the client to the server
C. To delete files on the server
D. To read file contents as text

Solution

  1. Step 1: Understand the role of FileResponse

    FileResponse is designed to send files from the server to the client in FastAPI.
  2. Step 2: Differentiate from other file operations

    Uploading or deleting files are handled differently; FileResponse specifically sends files.
  3. Final Answer:

    To send files from the server to the client -> Option A
  4. Quick Check:

    FileResponse sends files [OK]
Hint: FileResponse is for sending files to users [OK]
Common Mistakes:
  • Confusing FileResponse with file upload handling
  • Thinking FileResponse reads file content as text
  • Assuming FileResponse deletes files
2. Which of the following is the correct way to import FileResponse in FastAPI?
easy
A. from fastapi.responses import file_response
B. from fastapi import FileResponse
C. import FileResponse from fastapi.responses
D. from fastapi.responses import FileResponse

Solution

  1. Step 1: Recall correct import syntax

    FastAPI's FileResponse is imported from fastapi.responses using Python's standard import syntax.
  2. Step 2: Check each option's correctness

    from fastapi.responses import FileResponse uses correct syntax and casing. from fastapi import FileResponse misses the submodule. import FileResponse from fastapi.responses uses wrong syntax. from fastapi.responses import file_response uses wrong casing.
  3. Final Answer:

    from fastapi.responses import FileResponse -> Option D
  4. Quick Check:

    Correct import is from fastapi.responses [OK]
Hint: Import FileResponse from fastapi.responses [OK]
Common Mistakes:
  • Using wrong import syntax like 'import X from Y'
  • Importing directly from fastapi without .responses
  • Wrong casing like file_response instead of FileResponse
3. What will the following FastAPI endpoint return?
from fastapi import FastAPI
from fastapi.responses import FileResponse

app = FastAPI()

@app.get('/download')
async def download_file():
    return FileResponse('example.pdf', media_type='application/pdf', filename='report.pdf')
medium
A. Returns JSON with file path 'example.pdf'
B. Sends the file 'example.pdf' with download name 'report.pdf' and PDF media type
C. Raises an error because filename cannot be set
D. Sends 'report.pdf' file ignoring 'example.pdf'

Solution

  1. Step 1: Analyze FileResponse parameters

    The first argument is the file path to send ('example.pdf'). The media_type sets the content type to PDF. The filename sets the suggested download name.
  2. Step 2: Understand the endpoint behavior

    When called, the endpoint sends the file 'example.pdf' with content type 'application/pdf' and suggests the name 'report.pdf' for download.
  3. Final Answer:

    Sends the file 'example.pdf' with download name 'report.pdf' and PDF media type -> Option B
  4. Quick Check:

    FileResponse sends file with given path and filename [OK]
Hint: FileResponse(path, media_type, filename) sends file with custom name [OK]
Common Mistakes:
  • Thinking filename argument changes the file read
  • Expecting JSON response instead of file
  • Assuming filename cannot be set
4. Identify the error in this FastAPI endpoint that tries to send a file:
from fastapi import FastAPI
from fastapi.responses import FileResponse

app = FastAPI()

@app.get('/file')
async def get_file():
    return FileResponse(filepath='data.txt', media_type='text/plain')
medium
A. FileResponse does not accept a 'filepath' keyword argument
B. The media_type 'text/plain' is invalid
C. FileResponse requires a filename argument
D. The endpoint must be synchronous, not async

Solution

  1. Step 1: Check FileResponse constructor parameters

    FileResponse expects the file path as the first positional argument, not as a 'filepath' keyword argument.
  2. Step 2: Identify the error cause

    Passing 'filepath=' causes a TypeError because FileResponse does not have a 'filepath' parameter.
  3. Final Answer:

    FileResponse does not accept a 'filepath' keyword argument -> Option A
  4. Quick Check:

    FileResponse needs file path as first argument, no 'filepath=' [OK]
Hint: FileResponse takes file path as first argument, no 'filepath=' keyword [OK]
Common Mistakes:
  • Using 'filepath=' keyword instead of positional argument
  • Thinking filename is mandatory
  • Believing async is not allowed for endpoints
5. You want to create a FastAPI endpoint that sends a file only if it exists, otherwise returns a 404 error. Which code snippet correctly implements this behavior?
hard
A. from fastapi import FastAPI from fastapi.responses import FileResponse app = FastAPI() @app.get('/download') async def download(): return FileResponse('file.txt')
B. from fastapi import FastAPI from fastapi.responses import FileResponse app = FastAPI() @app.get('/download') async def download(): try: return FileResponse('file.txt') except FileNotFoundError: return {'error': 'File missing'}
C. from fastapi import FastAPI, HTTPException from fastapi.responses import FileResponse import os app = FastAPI() @app.get('/download') async def download(): if os.path.exists('file.txt'): return FileResponse('file.txt') else: raise HTTPException(status_code=404, detail='File not found')
D. from fastapi import FastAPI from fastapi.responses import FileResponse app = FastAPI() @app.get('/download') async def download(): if 'file.txt' in os.listdir('.'): return FileResponse('file.txt') else: return {'error': 'File not found'}

Solution

  1. Step 1: Check file existence properly

    Using os.path.exists('file.txt') correctly checks if the file exists before sending.
  2. Step 2: Return appropriate response on missing file

    Raising HTTPException with 404 status is the proper way to signal file not found in FastAPI.
  3. Final Answer:

    Code snippet B correctly checks file existence and raises 404 if missing -> Option C
  4. Quick Check:

    Check file with os.path.exists + raise HTTPException [OK]
Hint: Check file with os.path.exists, raise HTTPException 404 if missing [OK]
Common Mistakes:
  • Not checking file existence before sending
  • Returning JSON error instead of raising HTTPException
  • Using try-except without proper exception handling
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