T
traeai
登录
返回首页
Vercel News

Vercel Blob 现已支持生成带有效期的签名 URL

8.2Score

TL;DR · AI 摘要

Vercel Blob 现已支持生成带有效期的签名 URL,可用于浏览器直接上传、下载、检查或删除特定对象,安全性高且无需暴露长期存储令牌。

核心要点

  • 支持 PUT、GET、HEAD 和 DELETE 四种操作的签名 URL,有效期最长 7 天。
  • 浏览器可直接通过签名 URL 实现大文件流式上传,无需经过服务器中转。
  • 删除操作支持条件判断(ETag 匹配),避免误删最新版本。

结构提纲

按章节快速跳转。

  1. 介绍 Vercel Blob 签名 URL 的核心功能及其应用场景,包括安全性、时效性和操作限制。

  2. 详细说明 GET、PUT、HEAD 和 DELETE 操作的签名 URL 如何在浏览器端实现直接访问和操作 Blob 对象。

  3. 描述 PUT 操作如何支持多部分上传,使浏览器能直接将大文件写入 Blob 存储。

  4. 解释 DELETE 操作如何通过 ETag 实现条件删除,防止覆盖最新版本。

  5. §OIDC 的集成

    说明服务器如何通过 OIDC 认证生成签名令牌,并确保长期存储令牌的安全性。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Vercel Blob 签名 URL
    • 核心功能
      • 支持四种操作:GET, PUT, HEAD, DELETE
      • 有效期最长 7 天
      • 单路径、单操作范围
    • 应用场景
      • 浏览器直接上传大文件
      • 直接访问和操作 Blob 对象
      • 条件删除(ETag 匹配)
    • 安全机制
      • 与 OIDC 集成
      • 长期存储令牌不外泄

金句 / Highlights

值得收藏与分享的关键句。

#Vercel#Blob#签名 URL#OIDC#文件存储
打开原文

Vercel Blob 现已支持签名 URL - Vercel

原文链接

1 分钟阅读

2026 年 6 月 2 日

现在您可以为 Vercel Blob 生成带有时间限制的签名 URL。签名 URL 是一个带有效期的范围 URL,允许您上传、下载、检查或删除特定对象,而无需授予对整个 Blob 存储的访问权限。

每个 URL 都限定于单个操作(putgetheaddelete)、单个路径名,并且您可以选择有效期,最长可达 7 天。签名涵盖了操作和约束条件,因此一个用于 GET 的签名 URL 不能被用作 PUT

presigned-get.ts

ts
import { issueSignedToken, presignUrl } from '@vercel/blob';

const token = await issueSignedToken({
  operations: ['get'],
});

const { presignedUrl } = await presignUrl(token, {
  pathname: 'invoices/2026-q1.pdf',
  operation: 'get',
  validUntil: Date.now() + 5 * 60 * 1000, // 5 分钟
});

// 在客户端
<img src={presignedUrl} />

发出令牌,生成一个 5 分钟的读取 URL,并让浏览器直接渲染该对象。

[直接从浏览器上传](https://vercel.com/changelog/signed-urls-are-now-available-for-vercel-blob#direct-uploads-from-the-browser)

上传 URL (put) 支持多部分上传,因此浏览器可以直接将大文件流式传输到 Blob 存储,而无需通过您的服务器来回传输。

presigned-put.ts

ts
import { presignUrl } from '@vercel/blob';

const { presignedUrl } = await presignUrl(token, {
  pathname: 'user-uploads/avatar.png',
  operation: 'put',
  validUntil: Date.now() + 15 * 60 * 1000,
});

// 在客户端
await fetch(presignedUrl, { method: 'PUT', body: file });

生成一个 15 分钟的上传 URL,以便浏览器直接将文件写入 Blob。

[条件删除](https://vercel.com/changelog/signed-urls-are-now-available-for-vercel-blob#conditional-deletes)

删除 URL 接受 ifMatch 选项,因此只有在自签名 URL 以来对象未被覆盖时,删除操作才会生效:

presigned-delete.ts

ts
import { presignUrl } from '@vercel/blob';

const { presignedUrl } = await presignUrl(token, {
  pathname: 'tmp/session.json',
  operation: 'delete',
  validUntil: Date.now() + 60 * 1000,
  ifMatch: '"a1b2c3"', // 您打算删除的版本的 ETag
});

// 在客户端
await fetch(presignedUrl, { method: 'DELETE' });

如果自签名 URL 以来 ETag 发生了变化,则删除操作将不执行任何操作。

签名 URL 与 OIDC 一起使用。您的服务器通过 OIDC 认证到 Blob,生成一个签名令牌,并为浏览器生成狭窄范围、带有时间限制的 URL,因此您的长期 BLOB_READ_WRITE_TOKEN 永远不会离开服务器。

更新 @vercel/blob2.4.0阅读文档 开始使用。

AI 可能会生成不准确的信息,请核实重要内容