Lark CLI 妙搭应用文件存储实战指南:file 域命令的上传、下载、签名分享与配额管理
CLIAI 技能【免费下载链接】cliThe official Lark/飞书 CLI tool, maintained by the larksuite team — built for humans and AI Agents. Covers core business domains including Messenger, Docs, Base, Sheets, Calendar, Mail, Tasks, Meetings, and more, with 200 commands and 20 AI Agent Skills.项目地址https://gitcode.com/gh_mirrors/cli414/cli点击查看免费下载导读本文讲解 lark-cliLark/飞书官方 CLIapps file-*命令族用于管理妙搭Spark/Miaoda应用的文件存储上传本地文件、下载与列出远端文件、生成有时效的分享链接、批量删除以及查询存储用量。读完本文你将掌握 file 域的完整命令用法、--path精确寻址约定、时间过滤格式与时区陷阱以及各命令在 shortcuts/apps 源码中的底层实现原理能够在终端和 AI Agent 场景下安全高效地操作应用文件存储。何时使用 file 域当用户需要在某个妙搭应用里上传 / 下载 / 列出 / 删除文件、获取文件的临时分享链接、或查看存储用量时使用本域的 7 个命令。需要注意能力边界见 lark-apps/SKILL.md普通飞书云盘文件走lark-drive不归本域应用数据库中的表数据走db-*db-table-list、db-data-export等与文件存储是两套资产妙搭应用运行时所需的图片、字体、音视频等资源型文件属于平台资源不应提交到 git 仓库应通过file-upload上传后拿到远端 URL 在代码中引用上传返回的链接按应用隔离不同应用必须各自重新上传参见 SKILL.md「平台资源与应用源码边界」。所有 file 域命令均以用户身份--as user执行认证、scope、--as user、exit 码、_notice等通用处理见lark-shared/SKILL.md与本域 SKILL.md。命令一览命令做什么关键参数file-list列出文件可按名/路径/类型/大小/上传时间过滤--app-id、过滤器、--page-size/--page-tokenfile-get查单个文件的元数据--app-id、--pathfile-sign生成有时效的下载链接用于分享 / 直接下载--app-id、--path、--expires-infile-download把远端文件保存到本地--app-id、--path、--outputfile-upload上传本地文件到应用存储--app-id、--filefile-delete按路径批量删除文件--app-id、--path可重复、--yesfile-quota-get查应用的文件存储用量--app-id运行时命令事实以lark-cli apps cmd --help为准。命令均需要app_开头的妙搭应用 IDcli_开头的飞书应用 ID 绝不能传入任何apps *命令且只读命令需要spark:app:readscope写命令需要spark:app:writescope对应源码见 apps_file_list.go 等文件的Scopes字段。寻址与约定先读file 域有三个核心约定贯穿全部命令远端文件统一用--path精确寻址--path是远端路径带前导/如/1858537546760216.png。只知道文件名时先用file-list --name 名定位拿到path再做后续操作。源码中file-get、file-sign、file-download、file-delete都在校验阶段调用requireFilePath强制要求合法的远端路径。本地文件 / 输出路径用工作目录内的相对路径如--file ./report.pdf、--output ./out.png路径在别处时先cd过去或改成相对路径。这是 CLI 层的硬性约束——SKILL.md 明确--path、--file、--output等路径参数只接受当前工作目录cwd下的相对路径传绝对路径会报错。源码中file-download还通过rejectOutputTraversal拒绝--output的路径穿越见 apps_file_download.go。file 域不区分环境没有--env应用文件存储不分 dev/online与db-*的多环境设计不同源码注释明确 file 域不分 dev/online无 --env见 apps_file_list.go。各命令详解file-list列出与过滤文件列出应用文件支持精确过滤--name文件名、--path远端路径、--typeMIME 类型--size-gt/--size-lt字节大于 / 小于--uploaded-since/--uploaded-until上传时间区间时间格式见下文分页--page-size默认 20范围 1..200/--page-token上一页响应的游标lark-cli apps file-list --app-id app_xxx lark-cli apps file-list --app-id app_xxx --type image/png --uploaded-since 7d列表每项给出名称、路径、大小、类型、上传时间 5 列pretty 表格即这 5 列上传者、下载地址如有仅在 JSON 输出里单文件详情用file-get。源码级细节apps_file_list.go底层调用GET /apps/{app_id}/storage/file_list游标分页--page-size在 CLI 前置校验为[1, 200]validateFileListPageSize与后端 paas_storagecheckMaxKeys的(0, 200]契约对齐page_size 200服务端会直接返回ErrInvalidRequestCLI 前置校验避免无谓往返时间过滤参数uploaded-since/uploaded-until会在校验阶段经normalizeTimestamp归一化为 RFC3339 UTC 后回写再透传设计原则多格式时间统一归一化服务端返回的created_at/created_by会投影为产品语义的uploaded_at/uploaded_bypretty 输出为空时打印No files found.。file-get查单个文件元数据按--path查单个文件的元数据仅按 path 精确寻址无按名寻址。路径不存在时返回明确的「文件不存在」错误。lark-cli apps file-get --app-id app_xxx --path /1858537546760216.png源码级细节apps_file_get.go底层为GET /apps/{app_id}/storage/file?pathpathpretty 输出 key/value 形式file_name/path/size含 bytes/type/uploaded_by仅名字id 只在 JSON 保留/uploaded_at/download_url条件出现仅当服务端返回时。可用-q .data.size_bytes或-q .data.download_url提取单个字段。file-sign生成有时效的下载链接为指定文件生成一个有时效的下载链接——适合发给用户分享、或直接下载。--expires-in设有效期秒数默认 1 天 86400 秒最长 30 天 2592000 秒。pretty模式只输出链接本身便于复制 / 管道如直接curl要把到期时间一并告诉用户时用默认 JSON 输出含expires_at到期时间。lark-cli apps file-sign --app-id app_xxx --path /1858537546760216.png --expires-in 3600源码级细节apps_file_sign.go底层为POST /apps/{app_id}/storage/file_sign请求体{path, expires_in}--expires-in超过 30 天上限fileSignMaxExpiresSeconds 30 * 24 * 60 * 60会直接校验失败pretty 模式只打印signed_url一行JSON 返回{file_name, path, signed_url, expires_at}。file-download下载到本地把远端文件保存到本地。--output指定保存路径缺省时按远端文件名basename保存到当前目录。lark-cli apps file-download --app-id app_xxx --path /1858537546760216.png --output ./logo.png # 省略 --output 时保存为 ./1858537546760216.png源码级细节apps_file_download.go下载是两步实现——先POST /apps/{app_id}/storage/file_sign拿 presignedsigned_url直连对象存储再客户端GET signed_url落盘不单独设 download 接口。5xx 视为上游瞬时故障标记可重试4xx如签名过期需要重新签名而非盲重试。file-upload上传本地文件上传一个本地文件仅接收本地--file。关键行为文件名沿用本地文件名file_name basename特殊字符做 URL 编码透传以.开头的隐藏文件名如.bashrc会加_前缀避免下载回本地时覆盖隐藏文件远端路径由平台分配、全局唯一平台生成的 16 位 ID无法也无需手填单文件上限100 MB。lark-cli apps file-upload --app-id app_xxx --file ./report.pdf # 打印平台生成的远端路径 lark-cli apps file-upload --app-id app_xxx --file ./logo.png -q .data.path源码级细节apps_file_upload.go上传是三步直传流程POST /apps/{app_id}/storage/file_pre_upload请求体{file_name, file_size, content_type}→ 返回{upload_url, upload_id}客户端直接PUT文件字节到 presignedupload_url取响应ETag直连对象存储绕过 Lark 网关使用独立文件传输客户端newFileTransferClientPOST /apps/{app_id}/storage/file_upload_callback请求体{upload_id, etag}→ 返回文件元数据。文件名处理有两道防线先经sanitizeUploadFileName去掉 TOS 非法字符[:\/*?|,;]再encodeURIComponentUTF-8 百分号编码兼容中文让Content-Dispositionheader 合法PUT 时用mime.FormatMediaType规范生成Content-Disposition透传原始文件名若 sanitize 后仍以.开头则前置下划线。Content-Type 按扩展名推断mimeByExt未知回退application/octet-stream。file-delete批量删除高危按路径批量删除--path可重复传多个string_slice类型。删除是高危操作必须带--yes缺省会被确认关卡拦下。逐项返回结果部分文件删除失败如某个路径不存在不影响其余文件整体仍算成功失败项在结果里单独标出原因。lark-cli apps file-delete --app-id app_xxx --path /1858537546760216.png --yes lark-cli apps file-delete --app-id app_xxx --path /a.png --path /b.png --yes源码级细节apps_file_delete.go命令风险等级为high-risk-write框架自动注入--yes确认底层为POST /apps/{app_id}/storage/file_batch_remove请求体{paths:[...]}。注释说明了为什么是 POST 而非 DELETE网关不支持 DELETE-with-body实测DELETE→404 / POST→200后端results[]与请求paths顺序一一对应成功项带file失败项带error_codeCLI 据下标回填path部分失败整体仍ok:true—— 失败项落在data.results[].error不翻成非 0 退出码lark-cli 信封语义。file-quota-get查存储用量查应用的文件存储用量已用量、文件数配额接入后还会给总配额与使用率。lark-cli apps file-quota-get --app-id app_xxx源码级细节apps_file_quota_get.go底层为GET /apps/{app_id}/storage/file_quota。响应做白名单投影只保留storage_used_bytes/files配额已对接storage_quota_bytes 0时才追加storage_quota_bytes/usage_percent保留一位小数与db-quota-get同口径避免配额未接入时输出误导性字段。pretty 输出Storage已用 / 配额 (百分比)与Files两行。时间格式--uploaded-since / --uploaded-until按用户口语自然传入即可支持相对时间7d/2h/30s从现在往前推日期2026-04-15日期时间2026-04-15T10:00:00带时区的 ISO 86012026-04-15T10:00:00Z/2026-04-15T10:00:0008:00时区不带时区的日期/日期时间按运行机器的本地时区解析再归一化到 UTC 发给服务端。CIUTC与本地如 UTC8跑同一条命令过滤边界会差几小时要精确到某时区时显式写 ISO 8601 带偏移如...08:00/...Z。这一点在源码中有明确实现file-list的校验阶段对uploaded-since/uploaded-until调用normalizeTimestamp归一化为 RFC3339 UTC 并回写 flag见 apps_file_list.go多格式输入统一成 UTC 后透传给服务端。Agent 规则面向 AI Agent 调用 file 域的命令时遵循以下规则原文摘录见 lark-apps-file.md寻址一律用--path用户只给文件名时先file-list --name 名定位多个同名再让用户确认。上传 / 下载的本地路径用工作目录内相对路径不在当前目录就cd过去或改相对路径。用户要「分享链接 / 临时下载地址」时用file-sign把返回的链接转述给用户。删除前判断意图已明确要删且授权时可直接带--yes不确定删哪些时先file-list给用户确认。批量删除部分失败不报错按逐项结果向用户说明哪些成功、哪些没删掉及原因。从源码看这些规则与命令设计一一对应读类命令list/get/sign/download/quota风险等级均为read写类命令upload 为write、delete 为high-risk-writefile-delete的逐项失败语义由projectDeleteResults按下标回填路径实现确保 Agent 能向用户准确报告失败项。测试与验证仓库为 file 域提供了较完整的测试覆盖可作行为契约参考apps_file_list_test.go、apps_file_sign_test.go、apps_file_quota_get_test.go、apps_file_upload_test.go、apps_file_download_test.go、apps_file_delete_test.gofile_app_id_validation_test.go 覆盖app_id校验requireFileAppID相关行为quota_common_test.go 覆盖用量百分比口径等公共逻辑。小结file 域是妙搭应用资产管理的「文件存储」入口与db-*数据库表、cache-*运行时缓存、env-*环境变量并列共同构成应用运行时数据的完整管理面。核心要点可归结为远端一律--path精确寻址、本地一律 cwd 相对路径、删除必须--yes、分享用file-sign、批量删除看逐项结果。理解底层实现三步直传、presigned URL 签名下载、后端(0,200]分页契约、时间归一化为 UTC能帮助你更准确地预判命令行为与边界条件在脚本化和 Agent 自动化场景中减少无谓往返。赞分享CLIAI 技能【免费下载链接】cliThe official Lark/飞书 CLI tool, maintained by the larksuite team — built for humans and AI Agents. Covers core business domains including Messenger, Docs, Base, Sheets, Calendar, Mail, Tasks, Meetings, and more, with 200 commands and 20 AI Agent Skills.项目地址https://gitcode.com/gh_mirrors/cli414/cli点击查看免费下载相关推荐Ente CLI 管理命令实战使用 ente admin update-subscription 更新用户订阅与存储配额Ente CLI 管理命令实战使用 ente admin update subscription 更新用户订阅与存储配额 自托管或运营 Ente 服务时管理后端前端移动开发桌面应用密码学认证鉴权存储解决Hadoop存储失控命名空间与配额管理终极实战指南解决Hadoop存储失控命名空间与配额管理终极实战指南 在大数据时代Hadoop分布式文件系统HDFS作为核心存储组件其存储容量的爆炸性增长常常导致管大数据分布式文件系统批处理任务调度集群管理3步解锁本地服务全球访问Rust驱动的tunnelto实战指南3步解锁本地服务全球访问Rust驱动的tunnelto实战指南 还在为本地演示困境而烦恼吗当你需要向同事展示本地开发的前端页面或是让远程团队测试本地ACLIAI 技能上一篇Velocity动画调试技巧使用Chrome DevTools分析动画性能下一篇Prompt-Tools完整使用指南从基础操作到高级技巧的终极教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Presto内存管理与溢写磁盘:大查询防OOM的完整解决方案

Presto内存管理与溢写磁盘:大查询防OOM的完整解决方案

Presto内存管理与溢写磁盘:大查询防OOM的完整解决方案 【免费下载链接】presto The official home of the Presto distributed SQL query engine for big data 项目地址: https://gitcode.com/gh_mirrors/pre/presto Presto 是业界主流的分布式 SQL 查询引擎…

2026/9/21 2:49:33 阅读更多 →
滕州网站建设实战案例:网站被黑挂马,这3招救命

滕州网站建设实战案例:网站被黑挂马,这3招救命

滕州网站建设实战案例:网站被黑挂马,这3招救命 上周刚接了个滕州本地做建材的老客户,电话里声音都抖了。他花大几万做的官网,首页突然弹出一堆赌博广告,百度一搜全是“404”或者恶意跳转。这就是典型的 网站被黑挂马不知道怎么办…

2026/9/21 2:48:59 阅读更多 →
ZSH工具箱清单:awesome-zsh-plugins收录的16款效率神器(zsh-bench/zshelldoc等)

ZSH工具箱清单:awesome-zsh-plugins收录的16款效率神器(zsh-bench/zshelldoc等)

ZSH工具箱清单:awesome-zsh-plugins收录的16款效率神器(zsh-bench/zshelldoc等) 【免费下载链接】awesome-zsh-plugins A collection of ZSH frameworks, plugins, themes and tutorials. 项目地址: https://gitcode.com/gh_mirrors/aw/awe…

2026/9/21 2:48:32 阅读更多 →

最新新闻

ARIS 工作流总览:从 idea 到 paper 的 13 条 pipeline 如何一次看全

ARIS 工作流总览:从 idea 到 paper 的 13 条 pipeline 如何一次看全

ARIS 工作流总览:从 idea 到 paper 的 13 条 pipeline 如何一次看全 【免费下载链接】Auto-claude-code-research-in-sleep ARIS ⚔️ (Auto-Research-In-Sleep) — Lightweight Markdown-only skills for autonomous ML research: cross-model review loops, idea …

2026/9/21 4:06:15 阅读更多 →
Roc 格式化器幂等性测试实战:从 issue 8851 快照看多行分发与字段访问的格式化处理

Roc 格式化器幂等性测试实战:从 issue 8851 快照看多行分发与字段访问的格式化处理

Roc 格式化器幂等性测试实战:从 issue 8851 快照看多行分发与字段访问的格式化处理 【免费下载链接】roc A fast, friendly, functional language. 项目地址: https://gitcode.com/GitHub_Trending/ro/roc 导读:本文以 Roc 编译器仓库中的快照测试…

2026/9/21 4:04:14 阅读更多 →
TypePHP编译器API参考:程序化调用PHP AOT编译器的完整指南

TypePHP编译器API参考:程序化调用PHP AOT编译器的完整指南

TypePHP编译器API参考:程序化调用PHP AOT编译器的完整指南 【免费下载链接】typephp Compile PHP to Native Binaries 项目地址: https://gitcode.com/GitHub_Trending/ty/typephp TypePHP 是一款用 PHP 编写的原生 AOT 编译器(tpc)&a…

2026/9/21 4:04:14 阅读更多 →
React Admin 实时数据提供者(Realtime Data Provider)接入完整指南:方法签名、内置适配器与自定义实现

React Admin 实时数据提供者(Realtime Data Provider)接入完整指南:方法签名、内置适配器与自定义实现

前端UI组件 【免费下载链接】react-admin A frontend Framework for single-page applications on top of REST/GraphQL APIs, using TypeScript, React and Material Design 项目地址: https://gitcode.com/gh_mirrors/re/react-admin 点击查看 免费下载 本指南系…

2026/9/21 4:04:14 阅读更多 →
VitePress 默认主题 Layout 指南:深入理解 doc、page、home 与自定义布局

VitePress 默认主题 Layout 指南:深入理解 doc、page、home 与自定义布局

VitePress 默认主题 Layout 指南:深入理解 doc、page、home 与自定义布局 【免费下载链接】vitepress Vite & Vue powered static site generator. 项目地址: https://gitcode.com/gh_mirrors/vi/vitepress VitePress 通过 frontmatter 中的 layout 选项…

2026/9/21 4:04:14 阅读更多 →
Weex 鸿蒙化实践:js-base64 纯 JS 编解码库在 WebSceneAPI 中的集成与使用指南

Weex 鸿蒙化实践:js-base64 纯 JS 编解码库在 WebSceneAPI 中的集成与使用指南

移动开发跨平台前端UI组件OpenHarmony 【免费下载链接】weex A framework for building Mobile cross-platform UI 项目地址: https://gitcode.com/gh_mirrors/we/weex 点击查看 免费下载 导读 本文基于 WebSceneAPI 模块 内置的 js-base64 库(位于 co…

2026/9/21 4:04:14 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →