file-uploads

精通文件上传与云存储解决方案。涵盖S3、Cloudflare R2、预签名URL、分片上传及图像优化技术。擅长处理大文件无阻塞传输。适用场景:文件上传、S3存储、R2存储、预签名链接、分片传输。

作者

安装

热度:12

下载并解压到你的 skills 目录

复制命令,发送给 OpenClaw 自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=sickn33-skills-file-uploads&locale=zh&source=copy

File Uploads - 文件上传与云存储专家

技能概述


File Uploads 是一个专注于安全、高效文件上传和云存储集成的 AI 技能,帮助开发者处理从简单图片上传到复杂大文件分片上传的各种场景。

适用场景

1. 文件直传云存储


需要将用户上传的文件直接发送到 S3 或 Cloudflare R2 等云存储服务,避免服务器中转。特别适合处理大文件、视频或高并发上传场景,减少服务器带宽压力和内存占用。

2. 大文件与分片上传


处理 GB 级别的大文件上传,支持分片上传、断点续传和进度跟踪。避免单个请求超时或占用过多服务器资源,提升上传稳定性和用户体验。

3. 安全的文件类型验证


需要严格验证用户上传文件的真实类型,防止恶意文件伪装。通过检查 Magic Bytes 而非文件扩展名来识别文件类型,配合文件名清理防止路径遍历攻击。

核心功能

S3 & R2 预签名 URL


生成临时授权的上传 URL,让客户端直接上传到云存储而无需暴露服务器凭证。支持自定义过期时间和权限控制,减少服务器代理开销和安全风险。

分片上传与断点续传


将大文件分割成多个小块并行上传,支持失败重试和断点续传。适合网络不稳定环境或超大文件场景,大幅提升上传成功率。

图片优化处理


在上传或存储时自动压缩和优化图片,减少存储成本和加载时间。支持格式转换、尺寸调整和质量优化,适合用户头像、相册等场景。

常见问题

为什么不应该信任客户端提供的文件扩展名?


文件扩展名可以被任意修改,恶意用户可以将可执行文件重命名为 .jpg 或 .png 绕过检查。正确做法是通过读取文件头部的 Magic Bytes 来识别真实文件类型,比如 JPEG 文件总是以 FF D8 FF 开头。

预签名 URL 和服务器代理上传有什么区别?


预签名 URL 是云存储服务生成的临时授权链接,客户端可以直接上传,不经过你的服务器。服务器代理则是客户端先把文件发给你的服务器,再由服务器转发到云存储。预签名 URL 更节省服务器资源和带宽,也更安全,因为文件不经过你的服务器。

大文件上传会阻塞服务器吗?


如果使用传统的服务器代理方式,大文件确实会占用服务器内存和连接。正确的做法是使用预签名 URL 让客户端直接上传到云存储,或者使用分片上传技术。对于必须经过服务器的情况,应该使用流式处理而非缓存整个文件到内存。