Skip to content

Commit c7e2853

Browse files
committed
docs(upload): JSDoc 补齐 fileSize 必填字段,附校验链顺序
POST /api/upload 的 JSDoc 还在描述老接口形状(只列 filename/contentType/ articleSlug),本 PR 把 fileSize 改成了必填 + 加了 MIME primary/正则/SVG 多级闸,JSDoc 对不上签名 & 行为。补上: - @param 列出 fileSize 必填 + 指向 UploadRequest.fileSize 的解释 - 头部加 4 步校验链顺序,顺序敏感 - contentType 标注可带参数(服务端会 extractPrimaryMime) - uploadUrl 说明客户端必须发匹配的 Content-Length / Content-Type
1 parent fd6a286 commit c7e2853

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

app/api/upload/route.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,21 @@ const MIME_PATTERN = /^[a-z0-9][a-z0-9.+-]*\/[a-z0-9][a-z0-9.+-]*$/;
6565

6666
/**
6767
* @description POST /api/upload - 生成 R2 预签名 URL,用于客户端直接上传图片
68-
* @param request - NextRequest 对象,请求体包含以下字段:
68+
*
69+
* 校验链(顺序敏感):
70+
* 1. x-satoken + 后端 /auth/me 鉴权
71+
* 2. fileSize 必填 & Number.isSafeInteger & <= MAX_UPLOAD_BYTES
72+
* 3. contentType → extractPrimaryMime → MIME_PATTERN 正则闸 → `image/` 前缀 → SVG 黑名单
73+
* 4. ContentType / ContentLength 绑进预签名 URL
74+
*
75+
* @param request - NextRequest 对象,请求体(UploadRequest)包含以下字段:
6976
* - filename: 文件名
70-
* - contentType: 文件 MIME 类型
77+
* - contentType: 文件 MIME 类型(可带参数,服务端会抽主 MIME)
7178
* - articleSlug: 文章 slug(用于组织文件路径)
79+
* - fileSize: 必填,文件字节数;见 UploadRequest.fileSize 注释,用于把
80+
* ContentLength 绑进预签名 URL 做服务端大小限制
7281
* @returns NextResponse - 返回 JSON 对象:
73-
* - uploadUrl: 预签名上传 URL(用于 PUT 请求)
82+
* - uploadUrl: 预签名上传 URL(用于 PUT 请求;客户端必须发送匹配的 Content-Length / Content-Type header
7483
* - publicUrl: 图片的公开访问 URL
7584
* - key: R2 对象键
7685
*/

0 commit comments

Comments
 (0)