# 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.

- Skill: `ecnu-icalk/flask-in-memory-multi-url-zip-download-with-redirect` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/flask-in-memory-multi-url-zip-download-with-redirect`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/flask-in-memory-multi-url-zip-download-with-redirect/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/flask-in-memory-multi-url-zip-download-with-redirect

---


# 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
1. **Input Handling**: Accept a list of URLs (e.g., via JSON payload in a POST request).
2. **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.
3. **Downloading**: Use the `requests` library to fetch content from each URL.
4. **Zipping**: Use `zipfile.ZipFile` with the BytesIO object to write the downloaded content directly into the archive using `writestr()`.
5. **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`).
6. **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

