# 媒体目录辅助

`fsys.openXml.media` 是 PPTX/DOCX/XLSX 共用的目录枚举和原始字节导出实现。常规任务使用 `fsys.openXml.pptx/docx/xlsx` 各自的媒体入口，同时完成文档类型识别和包的关闭。

本模块接收已打开的 `fsys.openXml` 包对象，不自行打开或关闭包，不依赖 Office 或具体的内容读取器。底层导出仍使用 `pkg.extractPart`。

## list(pkg,mainPart,standardDir)

- `mainPart` 为主部件的包内 URI。
- `standardDir` 为该格式的标准媒体目录，包含末尾 `/`，例如 `word/media/`、`ppt/media/` 或 `xl/media/`。
- 返回标准目录及主部件同级 `media/` 下的文件，按包清单顺序；含子目录和未引用项，不含目录项。
- 数组项为 `partName,name,ext,size,compressedSize,contentType`。
- 不读取媒体内容，也不从所有关系构建媒体引用图，不访问外链。

## extract(pkg,parts,outputDir,options,maxFiles)

- `parts` 为 `list` 返回的数组。使用调用者已经打开的同一个包。
- 以末级文件名平铺导出，同名（忽略大小写）在写入前拒绝。
- `options.overwrite` 默认 false；已有普通文件记入 `skipped`，不重新读取/校验。
- 可选 `maxFiles` 为非负整数，限制成功导出数，跳过不计数；0 不导出。达到限额且仍有剩余项则设置 `truncated=true`。
- 成功返回 `{outputDir,files,skipped}`，文件项额外含 `source` 与完整输出 `path`。
- 失败返回 `null,err,partial`；每个文件经 CRC/长度/限额校验后用临时文件提交，但整批不是事务，不回滚此前成功项。
- 源件保护、设备文件名拒绝和写入失败清理均由通用 `extractPart` 实现。资源只作为数据复制，不执行或转码。

调用者负责保持包有效并在成功/失败时关闭。不要将目录媒体提取等同于任意部件解压、完整媒体发现或整包验证。当前读取一个完整部件到有大小上限的内存，不是无限制流式导出。
