임동욱 임동욱 08-21
merge: 쇼츠 영상 크기 제한 해제
@98546d456f5b8812fb46a61ba4b83d8a2ebadc00
app/(protected)/(basic)/contents/_components/content-video-field.tsx
--- app/(protected)/(basic)/contents/_components/content-video-field.tsx
+++ app/(protected)/(basic)/contents/_components/content-video-field.tsx
@@ -5,7 +5,6 @@
 import { FoxHelperText } from '@fox/core/components/fox-helper-text';
 import {
   FILE_MODULE,
-  MAX_STREAM_UPLOAD_BYTES,
   allowedExtensions,
   fileModuleAccept,
   isAllowedFileExtension,
@@ -43,13 +42,6 @@
       );
       return;
     }
-    if (file.size > MAX_STREAM_UPLOAD_BYTES) {
-      setError(
-        `${Math.floor(MAX_STREAM_UPLOAD_BYTES / 1_000_000)}MB 이하만 올릴 수 있습니다.`
-      );
-      return;
-    }
-
     const body = new FormData();
     body.set('file', file);
 
app/(protected)/(basic)/contents/upload/route.ts
--- app/(protected)/(basic)/contents/upload/route.ts
+++ app/(protected)/(basic)/contents/upload/route.ts
@@ -1,9 +1,6 @@
 import { getSessionAccessToken, verifySession } from '@/lib/auth/dal';
 import { backendFetchUpload } from '@/lib/http/backend-fetch';
-import {
-  MAX_STREAM_UPLOAD_BYTES,
-  findFileModule,
-} from '@/lib/domain/file-module';
+import { findFileModule } from '@/lib/domain/file-module';
 
 /**
  * 큰 파일 업로드 중계 — 브라우저 → 이 라우트 → 백엔드로 본문을 그대로 흘려보낸다.
@@ -11,6 +8,10 @@
  * Server Action을 쓰지 않는 이유는 그 경로의 multipart가 10MB 부근에서 잘리기 때문이다
  * (`MAX_ATTACHMENT_BYTES` 주석). 브라우저가 백엔드를 직접 부를 수는 없다 — 토큰이 httpOnly
  * 세션 안에만 있어서 여기서 붙여 준다.
+ *
+ * 크기를 여기서 막지 않는다(사용자 확정). 본문을 버퍼에 담지 않고 그대로 흘려보내므로 이
+ * 라우트에는 상한이 필요 없고, 실제 한도는 앞단 프록시와 백엔드가 정한다 — 넘으면 413이
+ * 사유와 함께 화면까지 올라간다.
  */
 
 const UPLOAD_PATH = '/api/v1/common/file/upload';
@@ -31,14 +32,6 @@
   const contentType = request.headers.get('content-type') ?? '';
   if (!contentType.startsWith('multipart/form-data')) {
     return fail(400, '요청 형식이 올바르지 않습니다.');
-  }
-
-  const declaredLength = Number(request.headers.get('content-length') ?? '');
-  if (Number.isFinite(declaredLength) && declaredLength > MAX_STREAM_UPLOAD_BYTES) {
-    return fail(
-      413,
-      `${Math.floor(MAX_STREAM_UPLOAD_BYTES / 1_000_000)}MB 이하만 올릴 수 있습니다.`
-    );
   }
 
   if (!request.body) {
lib/domain/file-module.ts
--- lib/domain/file-module.ts
+++ lib/domain/file-module.ts
@@ -126,6 +126,3 @@
  *   없다. 더 큰 파일은 미들웨어에서 제외한 스트리밍 라우트(`/contents/upload`)로 보낸다.
  */
 export const MAX_ATTACHMENT_BYTES = 10 * 1024 * 1024;
-
-/** 스트리밍 업로드 상한 — 백엔드 `multipartResolver`의 `maxUploadSize`(100,000,000)와 같은 값. */
-export const MAX_STREAM_UPLOAD_BYTES = 100_000_000;
Add a comment
List