프로그래밍 언어/python

장고 파일 업로드 기본 개념(django file upload)

벌게진눈 2018. 11. 27. 15:08
반응형

오늘은 개념 정리정도로만 빨리 메모하려고 한다. 


목적 : django에서 파일을 업로드 받아 파일을 저장하기
        AWS의 S3에 저장해야 하지만 일단은 PC에 저장하기 


다른 블로그에는 기본적인 model을 상속받아 사용하는 경우가 많았다. 하지만 나는 기본 모델들을 사용하지 않으므로 파일 자체를 변수로 저장해 어떻게 다루어야 할지 찾아보았다. 

django에서 파일을 업로드하면 백엔드에서는 
requset.FILES로 받게된다. 

for x in request.FILES:
  request.FILES[x]

이러면 업로드한 모들 파일들을 찾아본다. 
해당 type을 확인해보니 장고에서 제공하는 UploadedFile 이다.

 참고  URL : https://docs.djangoproject.com/en/2.1/ref/files/uploads/

위 사진을 보면 파일을 저장하는 방법은 총 2가지가 있다. 
read()와 chunks()이다. chunks는 영어로 덩어리라는 의미이다. 

파일을 업로드하면 파일이 메모리에 담기게 되는데 read()를 하면 메모리에 부담이되 서버가 죽을수 있다고 경고한다. 따라서 chunks()를 사용하라고 한다. 그렇다면 chunks()로 진행하려고 하니 read()는 자료형이 str인데 chunks()는 자료형이 generate라 다르다. 
그래서 chunks()가 어떤 역할을 하는 얘인지 찾아보았다. 

특정 크기만큼만 짤라서 read를 한다. 

지금 구성하는 사이트에서는 파일의 크기를 짤라서 사용하기 때문에 
앞에 파일의 크기를 체크하는 로직을 만들고 
read()로 바로 읽어도 무방할듯하다. 

끝!


반응형