fix: harden UPLOAD_MAX_BYTES parsing; sync docs with 1 GiB default
리뷰어 지적사항 반영: - "abc" 같은 오타도 Infinity 로 풀리던 문제 수정. 잘못된 값은 기본 1 GiB 로 fallback 하고 경고 로그를 남김. 무제한은 "0" 또는 "Infinity" 만 명시적으로 인정. - .env.example / README 의 "비우면 무제한" 표현을 코드 동작과 일치시켜 "비우면 기본 1 GiB" 로 정정. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -32,14 +32,21 @@ import { FfmpegUnavailableError, applyTrimToVideo } from '../editor.js'
|
||||
export const opRouter = Router()
|
||||
|
||||
// 업로드 용량 상한. 기본 1 GiB. UPLOAD_MAX_BYTES 환경변수로 변경 가능.
|
||||
// 명시적으로 무제한이 필요하면 UPLOAD_MAX_BYTES=0 (또는 Infinity).
|
||||
// - 비어있거나 미설정이면 기본 1 GiB
|
||||
// - "0" 또는 "Infinity" 만 명시적 무제한으로 인정
|
||||
// - 잘못된 값 (오타 등) 은 기본 1 GiB 로 fallback (경고 출력)
|
||||
const DEFAULT_UPLOAD_MAX_BYTES = 1024 * 1024 * 1024
|
||||
const uploadMaxBytes = (() => {
|
||||
const raw = process.env.UPLOAD_MAX_BYTES
|
||||
if (raw === undefined || raw === '') return DEFAULT_UPLOAD_MAX_BYTES
|
||||
const n = Number(raw)
|
||||
if (!Number.isFinite(n) || n <= 0) return Infinity
|
||||
return Math.max(1, n)
|
||||
if (raw === undefined || raw.trim() === '') return DEFAULT_UPLOAD_MAX_BYTES
|
||||
const trimmed = raw.trim()
|
||||
if (trimmed === '0' || trimmed.toLowerCase() === 'infinity') return Infinity
|
||||
const n = Number(trimmed)
|
||||
if (!Number.isFinite(n) || n <= 0) {
|
||||
console.warn(`[upload] invalid UPLOAD_MAX_BYTES=${JSON.stringify(raw)}; falling back to default ${DEFAULT_UPLOAD_MAX_BYTES} bytes`)
|
||||
return DEFAULT_UPLOAD_MAX_BYTES
|
||||
}
|
||||
return Math.max(1, Math.floor(n))
|
||||
})()
|
||||
const upload = multer({
|
||||
dest: tmpDir,
|
||||
|
||||
Reference in New Issue
Block a user