티스토리 뷰

728x90
반응형

 

장고에서 사용자가 업로드한 파일 저장하는 매우매우 쉬운 방법입니다!

models.py를 사용하지 않고 바로 views.py에서 파일을 저장하는 방법이에요.

 

일단 html에서 form태그에 enctype="multipart/form-data" 속성을 달아주세요.

enctype 속성은 form의 데이터가 서버로 제출될 때 해당 데이터가 인코딩되는 방법을 명시합니다.

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>파일 저장하기</title>
</head>
<body>
  <form method="POST" action="URL" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="file" id="file">
    <button type="submit">파일 저장</button>
  </form>
</body>
</html>

 

이제 form 데이터를 받는 views.py 파일을 열고,

FileSystemStorage를 임포트해주세요.

FileSystemStorage는 별도의 파라미터 없이 생성하면

파일이 저장되는 디렉토리의 경로는 settings.py의 MEDIA_ROOT입니다.

아까 form에 있던 file을 request.FILES로 받아와서 FileSystemStorage로 저장해주면 끝!!

 

from django.core.files.storage import FileSystemStorage  # 파일저장


file = request.FILES['file']
fs = FileSystemStorage()
filename = fs.save("파일명.csv", file)

 

 

사용자가 form을 입력하고 파일 저장 버튼을 누르면,

파일이 저장되는 디렉토리경로에 자동으로 파일이 저장됩니다!!

 

728x90
반응형
댓글