mcpField
B
blink-storage

blink-storage

github.com/blink-new云与 DevOps440 次安装2 周前更新
代码仓库

关于 blink-storage

blink-storage 是 Blink 存储功能的技能说明,面向需要在应用中上传、列出、下载或删除文件的开发者。它涵盖文件路径、访问权限及上传进度等用法。

主要功能

  1. 01上传文件并获取公开 URL
  2. 02按路径前缀列出文件
  3. 03生成下载链接并设置文件名
  4. 04删除单个或多个文件
  5. 05跟踪上传进度

适用场景

  1. 01上传头像并保存其 URL
  2. 02为视觉 AI 上传图像
  3. 03按目录查看项目文件
  4. 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