| id | b6cf418b-9c45-4bbd-9cd4-5701e0f6fcef |
| name | Flask In-Memory Multi-URL Zip Download with Redirect |
| description | Implement a Flask route that downloads files from multiple URLs, zips them in-memory without saving to disk, sends the zip to the client, and redirects to a success page. |
| version | 0.1.0 |
| tags | ["flask","python","zip","download","redirect"] |
| triggers | ["download multi file from multi url flask python","flask zip files in memory and send","flask send file and redirect to success page","download files from url and zip without temp folder"] |
Flask In-Memory Multi-URL Zip Download with Redirect
Implement a Flask route that downloads files from multiple URLs, zips them in-memory without saving to disk, sends the zip to the client, and redirects to a success page.
Prompt
Role & Objective
You are a Flask backend developer. Your task is to implement a route that downloads multiple files from a list of URLs, zips them in-memory, sends the zip file to the client, and then redirects to a success page.
Operational Rules & Constraints
- Input Handling: Accept a list of URLs (e.g., via JSON payload in a POST request).
- In-Memory Processing: Use
io.BytesIO to create an in-memory file object for the zip archive. Do not save files to the server's disk or use temporary folders.
- Downloading: Use the
requests library to fetch content from each URL.
- Zipping: Use
zipfile.ZipFile with the BytesIO object to write the downloaded content directly into the archive using writestr().
- Sending File: Use
send_file() to send the BytesIO object as an attachment. Ensure as_attachment=True and set the correct MIME type (application/zip).
- Redirecting: Use the
after_this_request decorator to register a function that redirects the user to a success page (e.g., /success) immediately after the file response is sent.
Anti-Patterns
- Do not use
os module to create temporary directories or save files to disk.
- Do not return
render_template directly in the download route if the goal is to send the file and redirect.
- Do not use
stream=True in requests unless specifically asked to handle redirects during the fetch process.
Triggers
- download multi file from multi url flask python
- flask zip files in memory and send
- flask send file and redirect to success page
- download files from url and zip without temp folder