diff --git a/changelogs/2026-07/12_feat_grassland_guide_admin_mp_oss.md b/changelogs/2026-07/12_feat_grassland_guide_admin_mp_oss.md index b2a8fb1..5833c3a 100644 --- a/changelogs/2026-07/12_feat_grassland_guide_admin_mp_oss.md +++ b/changelogs/2026-07/12_feat_grassland_guide_admin_mp_oss.md @@ -2,9 +2,9 @@ > 日期:2026-07-12 > -> 后端 Issue:[HL #4919](https://git.1814.love:8443/wx/HL/issues/4919)、[HL #4922](https://git.1814.love:8443/wx/HL/issues/4922) +> 后端 Issue:[HL #4919](https://git.1814.love:8443/wx/HL/issues/4919)、[HL #4922](https://git.1814.love:8443/wx/HL/issues/4922)、[HL #4927](https://git.1814.love:8443/wx/HL/issues/4927) > -> 后端 PR:[HL #4921](https://git.1814.love:8443/wx/HL/pulls/4921)、[HL #4924](https://git.1814.love:8443/wx/HL/pulls/4924) +> 后端 PR:[HL #4921](https://git.1814.love:8443/wx/HL/pulls/4921)、[HL #4924](https://git.1814.love:8443/wx/HL/pulls/4924)、[HL #4929](https://git.1814.love:8443/wx/HL/pulls/4929) > > 测试分支:`dev-v3` > @@ -114,6 +114,7 @@ export async function readVideoDurationSeconds(file: File): Promise { - 文件扩展名必须是 `.mp4`。 - `contentType` 必须以 `video/mp4` 开头。 - `durationSeconds` 必须大于 0。 +- 单个视频最大 `2147483648` 字节(2 GiB),大于 `10485760` 字节(10 MiB)时使用 OSS 分片上传。 响应中的 `uploadMode` 有两种: @@ -136,7 +137,13 @@ export async function readVideoDurationSeconds(file: File): Promise { } ``` -确认成功后保存返回的 `materialId`,创建草原指南内容时作为 `videoMaterialId` 提交。 +确认接口会通过 OSS `HeadObject` 读取实际对象元数据,并校验: + +- OSS 对象必须真实存在。 +- 实际 `Content-Length` 必须等于申请上传凭证时声明的 `fileSize`。 +- MP4 的实际 `Content-Type` 必须是 `video/mp4`(允许携带参数)。 + +任一校验失败时素材不会进入 `ACTIVE`。确认成功后保存返回的 `materialId`,创建草原指南内容时作为 `videoMaterialId` 提交。 ### 3.4 文件夹上传 @@ -308,6 +315,7 @@ OSS MP4 支持 Range 请求,原生 `