2. Which of the following is the correct way to import FileResponse in a FastAPI app?
easy
A. from fastapi.responses import FileResponse
B. from fastapi import FileResponse
C. import FileResponse from fastapi.responses
D. from fastapi.responses import file_response
Solution
Step 1: Recall correct import syntax
FastAPI's FileResponse is located in the fastapi.responses module and imported using Python's standard import syntax.
Step 2: Check each option
from fastapi.responses import FileResponse uses correct syntax and casing. from fastapi import FileResponse misses the responses submodule. import FileResponse from fastapi.responses uses wrong import order. from fastapi.responses import file_response uses incorrect casing.
Final Answer:
from fastapi.responses import FileResponse -> Option A
Quick Check:
Correct import = from fastapi.responses import FileResponse [OK]
Hint: Import FileResponse from fastapi.responses exactly [OK]
Common Mistakes:
Omitting the 'responses' submodule
Using wrong import syntax order
Incorrect capitalization of FileResponse
3. Given this FastAPI endpoint code, what will the client receive when accessing /download?
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get('/download')
async def download_file():
return FileResponse('files/report.pdf', media_type='application/pdf', filename='report.pdf')
medium
A. The server returns a 404 error because the file path is missing
B. The client receives a JSON response with file metadata
C. The client downloads the file named 'report.pdf' with PDF content
D. The client downloads a file named 'files/report.pdf' without content type
Solution
Step 1: Analyze FileResponse parameters
The path 'files/report.pdf' is given, media type is set to 'application/pdf', and filename is 'report.pdf'. This means the file will be sent as a PDF download named 'report.pdf'.
Step 2: Understand client behavior
The client will receive the file content with correct media type and suggested filename, triggering a download.
Final Answer:
The client downloads the file named 'report.pdf' with PDF content -> Option C
Quick Check:
FileResponse sends file with given name and media type [OK]
Hint: FileResponse sends file content with given filename and media type [OK]
Common Mistakes:
Assuming JSON response instead of file
Thinking filename is the full path sent to client
Ignoring media_type affects download behavior
4. Identify the error in this FastAPI endpoint for file download:
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get('/getfile')
def get_file():
return FileResponse(path='myfile.txt', media_type='text/plain', filename=myfile.txt)
medium
A. FileResponse must be awaited since endpoint is async
B. Filename argument is not a string (missing quotes)
C. Path argument should be a URL, not a file path
D. Missing import for FileResponse
Solution
Step 1: Check filename argument syntax
The filename argument is written as filename=myfile.txt without quotes, so Python treats it as a variable, causing a NameError.
Step 2: Verify other parts
The endpoint is synchronous which is allowed. Path can be a file path. FileResponse is imported correctly. So only filename syntax is wrong.
Final Answer:
Filename argument is not a string (missing quotes) -> Option B
Quick Check:
Filename must be a string literal [OK]
Hint: Always quote filename strings in FileResponse [OK]
Common Mistakes:
Forgetting quotes around filename string
Assuming async needed for FileResponse
Confusing file path with URL
5. You want to create a FastAPI endpoint that lets users download a CSV file named data.csv stored in static/files/. The file path may not exist sometimes. Which is the best way to handle this safely?
hard
A. Use FileResponse with a try-except block to catch file not found errors and return 404
B. Return FileResponse directly without checking; client will get an error if file missing
C. Use StreamingResponse without checking file existence
D. Send the file content as a plain string response
Solution
Step 1: Understand file existence risk
Since the file may not exist, directly returning FileResponse risks server errors or confusing client errors.
Step 2: Implement error handling
Using a try-except block to catch FileNotFoundError and returning a 404 response is best practice for user-friendly error handling.
Final Answer:
Use FileResponse with a try-except block to catch file not found errors and return 404 -> Option A
Quick Check:
Check file existence and handle errors gracefully [OK]
Hint: Always check file exists before FileResponse to avoid errors [OK]