同步设置

This commit is contained in:
tianmo committed 2026-10-17 19:01:13 +08:00
1 parent 832261739f
commit 92aaf6fbb8
28 files changed
+705 -227

No files matched your search

+38 -1
View File
@@ -51,6 +51,7 @@ import {
parseLoginRateMax,
parseLoginRateWindowMinutes,
parseUploadMaxFileSizeMb,
parseUploadMaxFileSizeMbForKind,
parseUploadRateIpMax,
parseUploadRateTokenMax,
parseUploadRateWindowMinutes,
@@ -78,6 +79,9 @@ interface SettingsPatchBody {
capApiEndpoint?: unknown
capSecret?: unknown
uploadMaxFileSizeMb?: unknown
uploadImageMaxFileSizeMb?: unknown
uploadVideoMaxFileSizeMb?: unknown
uploadFileMaxFileSizeMb?: unknown
allowedMimeTypes?: unknown
allowedVideoExtensions?: unknown
forbiddenFileExtensions?: unknown
@@ -360,11 +364,44 @@ export default defineEventHandler(async (event) => {
if (body.uploadMaxFileSizeMb !== undefined) {
const mb = parseUploadMaxFileSizeMb(String(body.uploadMaxFileSizeMb))
if (mb === null) {
createApiError(event, 'INVALID_REQUEST', '单文件大小需为 1–100 MB 的整数', 400)
createApiError(event, 'INVALID_REQUEST', '图片大小需为 0–100 MB 的整数', 400)
}
setUploadPolicySettings({ uploadMaxFileSizeMb: mb })
}
if (body.uploadImageMaxFileSizeMb !== undefined) {
const mb = parseUploadMaxFileSizeMbForKind(
String(body.uploadImageMaxFileSizeMb),
'image'
)
if (mb === null) {
createApiError(event, 'INVALID_REQUEST', '图片大小需为 0–100 MB 的整数', 400)
}
setUploadPolicySettings({ uploadImageMaxFileSizeMb: mb })
}
if (body.uploadVideoMaxFileSizeMb !== undefined) {
const mb = parseUploadMaxFileSizeMbForKind(
String(body.uploadVideoMaxFileSizeMb),
'video'
)
if (mb === null) {
createApiError(event, 'INVALID_REQUEST', '视频大小需为 0–2048 MB 的整数', 400)
}
setUploadPolicySettings({ uploadVideoMaxFileSizeMb: mb })
}
if (body.uploadFileMaxFileSizeMb !== undefined) {
const mb = parseUploadMaxFileSizeMbForKind(
String(body.uploadFileMaxFileSizeMb),
'file'
)
if (mb === null) {
createApiError(event, 'INVALID_REQUEST', '文件大小需为 0–1024 MB 的整数', 400)
}
setUploadPolicySettings({ uploadFileMaxFileSizeMb: mb })
}
if (body.allowedMimeTypes !== undefined) {
const raw = Array.isArray(body.allowedMimeTypes)
? body.allowedMimeTypes.map(item => String(item))
+5 -1
View File
@@ -1,6 +1,7 @@
import {
getAllowedMimeTypesList,
getAllowedVideoExtensions,
getEffectiveUploadMaxFileSizeMb,
getForbiddenFileExtensions
} from '../utils/upload-policy'
@@ -9,6 +10,9 @@ export default defineEventHandler((event) => {
return {
allowedMimeTypes: getAllowedMimeTypesList(),
allowedVideoExtensions: getAllowedVideoExtensions(),
forbiddenFileExtensions: getForbiddenFileExtensions()
forbiddenFileExtensions: getForbiddenFileExtensions(),
imageMaxFileSizeMb: getEffectiveUploadMaxFileSizeMb('image'),
videoMaxFileSizeMb: getEffectiveUploadMaxFileSizeMb('video'),
fileMaxFileSizeMb: getEffectiveUploadMaxFileSizeMb('file')
}
})