본문 바로가기

카테고리 없음

[Node.js] Firebase Hosting 때 파일 업로드 기능 구현 시 주의사항

반응형

Firebase Hosting 무료 버전에서 파일 업로드를 테스트해볼 때 삽질을 많이 했던 것 같다.(웹 쪽 부분도 오랜만에 보니 너무 생소한 것 같고...)

 

나중에 똑같은 삽질을 안 하기 위해 정리해 둔다.

 

체크포인트만 간략하게 정리하면 다음과 같다.

 

1. 일단 html 쪽에서 Form 부분에 enctype을 안 주면 form-data 형태로 안 넘어가므로 받을 수가 없다.

<form id="form1" name="form1" method="post" action="{$URL}" enctype="multipart/form-data">
	<input type="file" id="uploadfile" name="uploadfile" />
	<input type="submit" />
</form>

 

2. 공식 문서에서 req.rawBody에 제대로 오는지 확인할 것(없다면 req.body에 해당 파일 내용이 오는지 확인)
공식문서 링크 : https://cloud.google.com/functions/docs/writing/http?hl=ko

 

HTTP 함수  |  Cloud Functions 문서  |  Google Cloud

HTTP 함수는 HTTP를 통해 함수를 직접 호출할 때 사용됩니다. 특정 HTTP 의미 체계를 허용하기 위해 HTTP 함수 시그니처는 HTTP를 위한 인수인 request와 response를 사용합니다. 요청 매개변수는 함수로 보낸 HTTP 요청을 나타내며 응답 매개변수는 호출자에게 반환될 HTTP 응답을 나타냅니다. 이러한 매개변수는 ExpressJS 요청 및 응답 객체의 속성을 가지며 데이터 추출 및 반환에 사용됩니다. 참고: 함수가 완료되면 항상 s

cloud.google.com

공식문서에서 보면 마지막에 busboy.end(req.rawBody); 적혀 있는데 이 부분 때문에 애를 많이 먹었다. 실제 파일 내용이 들어오는 부분이 req.rawBody가 아니라면 'file'이벤트를 받을 수가 없으므로 req.rawBody를 확인해보고 없다면 req.body로 넘겨보면 해결된다.

 

3. 넉넉히 한 9MB 정도로 제한을 잡아야 함(요청이 10MB 넘어가면 차단됨....)

반응형