这篇内容适合谁
你需要一套“上传压缩包 -> 在线看目录与关键文件 -> 只提取需要的文件下载”的轻量工具,但不想引入复杂的素材管理系统;或者你在做素材包交付/审核,需要快速确认包内结构、文件命名、是否缺文件、是否有可疑路径等。
你将得到的交付物
你把下面的 Prompt 直接丢给 AI,它会输出一份可运行的在线工具完整项目:包含清晰的文件树、关键文件完整代码、本地运行命令、生产构建命令、部署说明(Docker + Vercel/自建),以及测试用例或 QA checklist。目标是“复制即能跑、构建即能部署”。
覆盖的典型场景
1) 设计/素材团队交付 ZIP 包的结构检查(是否按约定目录分层、是否含多余大文件)。
2) 研发/运营拿到资源包后快速预览文本配置、CSV 清单、README、变更说明。
3) 客服/审核需要对上传包做基础安全校验:路径穿越、解压炸弹、重复文件名、异常编码等。
Prompt(直接复制给 AI)
你是一名资深全栈工程师+安全工程师。请从零生成一个“在线 ZIP/7Z 解压与目录树预览/文件提取”Web工具的完整可运行项目(不要生成任何图片/海报/插画/渲染图相关内容;只处理用户上传的现有压缩包内容的预览/提取)。
目标功能:
1) 用户上传 ZIP 或 7Z(最大 200MB,可配置)。
2) 解析并展示目录树(支持展开/折叠、搜索、按文件类型筛选、显示大小/修改时间)。
3) 点击文件节点:
- 文本类(txt/md/json/csv/ /log)在线预览(大文件按行分页/抽样)。
- 图片/音视频只做“信息预览”(如尺寸、时长、编码参数)与可选下载;不做生成式出图。
- PDF 只做页数/元信息读取与可选下载(不做渲染出图)。
4) 支持勾选多个文件一键打包下载(重新打包为 ZIP)。
5) 安全要求:
- 防 Zip Slip(路径穿越)与符号链接攻击;
- 解压炸弹检测(递归层级、压缩比、总展开大小阈值);
- MIME/扩展名双校验;
- 解析在服务端进行(Node),前端仅上传与展示;
- 全程不落盘:解压到内存或临时目录(可配置),并提供清理策略。
技术栈要求:
- 前端:Next.js 14 + Type + Tailwind(或等价React栈),提供清晰的UI(目录树、预览面板、任务进度)。
- 后端:Next.js Route Handlers(或独立Express)实现上传、解析、下载。
- 解压:ZIP 用 yauzl/adm-zip/fflate 之一;7Z 用 7zip-wasm 或 node-7z(若依赖系统7z则给出替代方案)。
- 不使用数据库;必要的任务状态用内存+短期缓存即可。
交付物硬要求:
A) 输出完整项目文件结构(tree)。
B) 给出每个关键文件的完整代码(可复制粘贴后直接运行/构建)。
C) 提供本地运行命令(pnpm/npm)、生产构建命令、环境变量示例。
D) 提供部署说明:Dockerfile + docker-compose(可选),以及 Vercel/自建服务器两种路径。
E) 提供测试用例或 QA checklist:至少覆盖上传边界、Zip Slip、炸弹、中文路径、超长文件名、重复文件名、预览大文件、打包下载一致性。
实现细节:
- 上传采用分片或流式(至少说明为何选择)。
- 解析目录树时保留原始路径与规范化路径,并在UI中高亮可疑条目。
- 对预览接口做鉴权/限流(可以是简单的token或一次性session id)。
- 所有响应要有明确错误码与可读提示。
现在开始:先给出整体架构与接口设计,然后给出文件树与完整代码,最后给出运行/部署/测试说明。
使用建议
如果你希望工具“全程不落盘”,让 AI 选择基于流式解析 ZIP 的方案,并在 7Z 解析部分优先 wasm 方案;如果你的部署环境更偏传统服务器,也可以允许落盘到临时目录,但必须明确清理策略与阈值(展开总大小、递归层级、压缩比)。
验收与自测清单(要点版)
1) 上传:正常 ZIP/7Z、中文路径、超长文件名、重复文件名、空包;
2) 安全:Zip Slip 拦截、解压炸弹阈值触发、可疑条目提示;
3) 预览:大文本分页/抽样、JSON 语法高亮(可选)、错误提示;
4) 下载:单文件下载、多选重新打包下载、内容一致性校验;
5) 部署:本地开发、生产构建、Docker 运行、Vercel 部署至少一条路径可用。