Cloudflare Computer上传管道详解:base32、MIME识别与SigV4签名三件套完整指南

发布时间:2026/10/29 7:55:57

Cloudflare Computer上传管道详解:base32、MIME识别与SigV4签名三件套完整指南 Cloudflare Computer上传管道详解base32、MIME识别与SigV4签名三件套完整指南【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computerCloudflare Computer是让 AI Agent 拥有一台电脑的开源项目它把持久化虚拟文件系统装进 Durable Object并让 Agent 能把生成的图表、截图、构建产物一键变成可分享的限时链接。本文详解这条上传管道背后的三件套——base32 随机密钥、MIME 类型识别与SigV4 预签名 URL带你快速看懂它如何在不暴露存储桶的前提下安全地分享文件。上传管道能做什么一次 share 调用核心入口是 index.ts 中的createAssets它一次性绑定工作区Workspace和 R2 存储桶之后每次调用share(path, opts)就会完成三件事把虚拟文件系统里的文件流式上传到 R2 对象存储为对象写入Content-Type、Content-Disposition等元数据返回一个限时有效的预签名 GET URL谁拿到链接谁就能下载直到过期。 典型场景Agent 在沙箱里跑出一张图表调用一次分享接口就把 URL 丢进聊天消息——存储桶名、凭证、工作区目录结构全程不外泄。第一件base32 生成唯一且短的资源密钥为什么不用 UUID上传时每个对象需要一个 key对象在桶里的文件名。如果直接用 UUID是 36 个带连字符的字符而 base32.ts 采用Crockford base32 编码把 16 字节随机数压成约 26 个纯小写字母数字更短、URL 安全、无歧义字母表去掉了易混的 I、L、O、U。资源密钥的命名规则密钥格式在 upload.ts 中定义prefix/id/文件名id每次调用都重新生成同一个文件分享两次会得到两个不同的 key互不覆盖两条链接各自独立只落 basename分享/workspace/secret/plans/q3.pdf只会生成prefix/id/q3.pdf目录结构永远留在工作区内路径保持私密。解码时还对大小写和易混字母做了兼容如O→0、I/L→1即使人工转录过 token 也能还原。第二件MIME 识别给文件标上正确的 Content-Type轻量查表不拖慢体积mime.ts 内置了一张迷你扩展名 → 类型表图片png/jpg/webp/avif、文本代码md/csv/json/yaml、文档pdf、压缩包zip/gz/tar和音视频mp4/mp3/wav共 30 余项——刚好覆盖 Agent 最常分享的文件类型避免把上百条目的 MIME 大数据库打进 bundle。识别规则很简单取文件名最后一个.之后的扩展名忽略大小写去查表查不到就回退到application/octet-stream。两个可以覆盖的默认值contentType选项调用方更懂业务时可强制指定类型永远优先于查表结果dispositioninline默认浏览器直接渲染适合图片/PDF或attachment强制下载文件名还支持 RFC 5987 的filename*编码中文等 Unicode 文件名也能正确还原。第三件SigV4 签名造出限时可访问的 URL不引依赖自己实现预签名sigv4.ts 实现了一个极简版 AWS Signature Version 4query-string 预签名风格只保留 R2 的 S3 兼容端点所需的 presigned-GET 路径整个算法就是几轮 HMAC-SHA256 套在确定性字符串上规范化请求 → 待签名串 → 签名密钥按 日期/区域/服务 逐层派生→ 最终签名拼进 URL 查询参数GET 请求的负载标记为UNSIGNED-PAYLOAD不读取也不哈希文件内容URL 纯粹是输入与时间的函数生成零成本有效期expiresIn由调用方毫秒数换算而来上限 7 天AWS/R2 的预签名最长寿命。 安全设计R2 的 binding 本身不能签发 URL所以要额外提供 API token 的 access/secret key缺凭证时createAssets会在启动时报出具体缺哪个值而不是事后抛一个看不懂的 403。为大文件准备的流式哈希模块还保留了一个sha256HexStream对ReadableStream增量哈希内存里永远只有一块数据多 GB 的文件也能常空间算完——为将来直接签名上传负载留了后路。三件如何配合一次 share 的完整流程生成 keyrandomId()产出 base32 token拼上规范化后的 prefix 与文件名推断类型查 MIME 表或用你传入的contentType连同 Content-Disposition 一起准备元数据流式上传R2 要求已知长度的流所以 VFS 读出的流会被包进FixedLengthStream长度来自fs.stat边读边传全程不缓冲失败时通过 AbortController 干净地中断管道写入自定义元数据源路径、会话 ID、过期时间戳方便日后按 R2 生命周期规则或元数据清理对象签发链接调用presignUrl把带签名的 GET URL 返回给调用方。官方设计文档在 14_assets_interface.md里面有完整的选项表和配置对照环境变量回退顺序R2_ACCESS_KEY_ID→AWS_ACCESS_KEY_ID等。快速上手让 Agent 自己发链接管道已经以两种形态开箱即用AI 工具publish.ts 提供publish工具Agent 传入工作区路径可选有效期默认 1 小时直接拿回限时 URLShell 命令worker backend 的 just-bash 环境里可执行assets publish path [expiry]链接直接写到 stdout支持ms/s/m/h后缀。小结组件职责关键词亮点base32生成 26 字符短随机密钥唯一、URL 安全、路径私密MIME按扩展名推断 Content-Type轻量查表、可覆盖SigV4签发限时预签名 URL零依赖、UNSIGNED-PAYLOAD、7 天上限三者各司其职让 Cloudflare Computer 的上传管道在流式零缓冲的前提下完成了从沙箱里的一个文件到任何人都能打开的限时链接的全部工作。【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/24 22:29:40

Freqtrade FreqAI 教程:10 分钟跑通第一个 AI 交易策略

Freqtrade FreqAI 教程:10 分钟跑通第一个 AI 交易策略 【免费下载链接】freqtrade Free, open source crypto trading bot 项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade Freqtrade FreqAI 是 Freqtrade 开源交易机器人内置的自适应机器学习…

2026/10/24 15:53:25

Anime.js 3D卡片翻转:手把手3步实现滚动堆叠效果

Anime.js 3D卡片翻转:手把手3步实现滚动堆叠效果 【免费下载链接】anime JavaScript animation engine 项目地址: https://gitcode.com/GitHub_Trending/an/anime 给SaaS产品团队页做卡片时,一排平铺的头像显得寡淡。这篇用Anime.js把一次滚动变成…

2026/10/25 4:43:01

78 个公共 BitTorrent Tracker:qBittorrent 提速实操指南

78 个公共 BitTorrent Tracker:qBittorrent 提速实操指南 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist trackerslist 是一个持续更新的公共 BitTorrent Track…

2026/10/29 7:54:07

楼宇自动化控制系统(BA)设计与实施全解析

1. 楼控BA系统基础认知楼宇自动化控制系统(Building Automation System,简称BA系统)是现代建筑中不可或缺的神经中枢。这套系统通过计算机网络技术,将建筑物内的暖通空调、给排水、供配电、照明、电梯等设备集成在一个平台上进行监…

2026/10/29 7:54:07

分布式训练中Collective Communication优化实战

1. 项目概述:Collective Communication的核心挑战在分布式训练和HPC领域,Collective Communication(集体通信)一直是性能优化的关键瓶颈。当我们在千卡集群上跑ResNet-50训练时,AllReduce操作可能消耗超过30%的总训练时…

2026/10/29 7:54:07

GitHub高质量项目筛选与前沿技术趋势分析

1. GitHub项目趋势观察方法论作为全球最大的代码托管平台,GitHub每日都会涌现数以万计的新项目。要系统性地追踪高质量项目,我通常会采用三维度筛选法:技术趋势雷达:通过GitHub Topics和Trending页面的技术标签聚类分析&#xff0…

2026/10/29 7:54:07

Vibe Coding术语词典:AI编程知识图谱解析

1. 项目概述:为什么需要Vibe Coding术语词典?2023年GitHub统计显示,AI辅助编程工具使用量同比增长470%,开发者每天平均接触12个新术语。Vibe Coding作为新兴的AI编程范式,其术语体系正在快速演化。这本词典的独特价值在…

2026/10/29 7:54:07

营销技能实战指南:从入门到转化落地

我无法根据当前输入生成符合要求的博文。原因在于:您提供的输入内容中,项目标题为 "marketingskills",但后续未提供任何实质性的项目正文、关键词列表或摘要描述。整个输入体为空(相关热搜词:和最新网络热词…

2026/10/29 7:49:07

Python UWB定位系统实战:从源码到厘米级室内定位

简介:本资源为基于Python的UWB超宽带室内定位系统源码包,面向从事室内定位算法研究、嵌入式开发及物联网应用的学生与工程师。项目采用迭代最小二乘法不断更新目标位置估计以提升定位精度,已实现位置解算并可在TREK1000设备上运行&#xff0c…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑