关于 blink-storage
blink-storage 是 Blink 存储功能的技能说明,面向需要在应用中上传、列出、下载或删除文件的开发者。它涵盖文件路径、访问权限及上传进度等用法。
主要功能
- 01上传文件并获取公开 URL
- 02按路径前缀列出文件
- 03生成下载链接并设置文件名
- 04删除单个或多个文件
- 05跟踪上传进度
适用场景
- 01上传头像并保存其 URL
- 02为视觉 AI 上传图像
- 03按目录查看项目文件
- 04删除不再需要的存储文件
MCP 相关
该技能列出 MCP 工具 blink_storage_list、blink_storage_url 和 blink_storage_delete,供客户端访问文件列表、公开 CDN URL 和删除操作。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ blink-new/ blink-plugin --skill blink-storage安装后在 Claude Code 中输入/blink-storage确认已加载。
详细介绍
MCP 工具
| 工具 | 描述 |
|---|---|
blink_storage_list | 列出项目存储中的文件,可选指定路径前缀 |
blink_storage_url | 获取已存储文件的公共 CDN URL |
blink_storage_delete | 从存储中删除文件 |
入门
# Upload a file
blink storage upload ./photo.jpg --path uploads/photo.jpg
# List files
blink storage list
# List files in a path
blink storage list uploads/
身份验证要求
| 操作 | 是否需要身份验证 | 备注 |
|---|---|---|
upload() | ❌ 否 | 仅允许公开新增(不覆盖) |
download() | ✅ 是 | 签名 URL |
remove() | ✅ 是 | 需要 JWT |
上传
const { publicUrl } = await blink.storage.upload(
file,
`uploads/${Date.now()}.${file.name.split('.').pop()}`,
{ onProgress: (percent) => console.log(`${percent}%`) }
)
SDK 会根据内容自动检测文件类型并修正扩展名。上传仅允许新增——重复路径会返回 409。请使用时间戳或随机 ID 确保路径唯一。
下载
const { downloadUrl, filename } = await blink.storage.download('images/photo.jpg')
window.open(downloadUrl, '_blank')
// Custom filename
const { downloadUrl } = await blink.storage.download('images/photo.jpg', {
filename: 'my-photo.jpg',
})
删除
await blink.storage.remove('uploads/file1.jpg')
await blink.storage.remove('file1.jpg', 'file2.jpg', 'file3.png') // multiple
常见模式
上传头像
const handleAvatarUpload = async (file: File) => {
const { publicUrl } = await blink.storage.upload(
file,
`avatars/${user.id}-${Date.now()}.${file.name.split('.').pop()}`
)
await blink.auth.updateMe({ avatar: publicUrl })
return publicUrl
}
上传并显示进度
const [progress, setProgress] = useState(0)
const handleUpload = async (file: File) => {
const { publicUrl } = await blink.storage.upload(
file,
`documents/${Date.now()}.${file.name.split('.').pop()}`,
{ onProgress: (percent) => setProgress(percent) }
)
return publicUrl
}
用于 AI 图像输入
先上传文件以获取带扩展名的 HTTPS URL,这是 AI 视觉功能所必需的。
const { publicUrl } = await blink.storage.upload(photo, `photos/${Date.now()}.jpg`)
const { text } = await blink.ai.generateText({
messages: [{ role: "user", content: [
{ type: "text", text: "What's in this image?" },
{ type: "image", image: publicUrl },
]}],
})
URL 格式
上传的文件会返回直接的 HTTPS URL:https://storage.googleapis.com/{project}/uploads/{filename}.{ext}——可公开访问,使用 HTTPS,并包含文件扩展名。
常见错误
| 错误 | 原因 | 解决方法 |
|---|---|---|
| 409 conflict | 路径已存在 | 添加时间戳/随机 ID |
| Invalid path | 特殊字符 | 清理:path.replace(/[^a-zA-Z0-9_\-\/\.]/g, '_') |
| File too large | 超出限制 | 压缩或拆分文件 |
评论
支持 Markdown