Python flask에서 파일을 업로드 할 경우 하나가 아닌 다수라면 어떻게  해야할까요? 클라이언트측 html과 서버측 python 코드를 아래에서 알아봅니다.



# Python flask에서 여러 파일 전송, 전달받기

아래 예제를 통하여 html과 python 코드를 예제를 통해 알아봅니다. 먼저 파일을 전송하기 위해 간단한 입력폼이 필요합니다.

! upload.html
<form method="POST" enctype="multipart/form-data" action="/uploadfile/">
  <input type="file" name="file[]" multiple="">
  <button type="submit">Submit</button>
</form>

이때 중요한 부분은 form 태그의 속성으로 enctype을 추가하고 파일을 선택하는 input 태그의 name 속성 역시 배열로 여러개의 파일을 전달할 수 있도록합니다.

name="file[]"

html 코드는 이걸로 모두 끝났습니다. 버튼을 클릭하면 첨부된 파일이 서버에 함께 요청됩니다. 그럼 아래는 Python 코드로 전달한 파일을 받아 변수에 저장하는 방법입니다.



! Python 파일 멀티 업로드 예제 만들기이번에는 Python에서는 간단하게 입력폼의 파일만 받도록 코드를 작성해야합니다. 먼저 라우팅을 설정해 해당 url로 POST로 접근시 함수를 실행하게합니다.
@app.route("/uploadfile/", methods=["POST"])
def upload_file():
    files = flask.request.files.getlist("file[]")
    return ""

위에 보시는 것 처럼  /uploadfile/이라는 url 주소로 파일을 보내면 변수 files에 값을 받는데 이때 flask 모듈의 request에서 해당 기능을 수행합니다. 즉 전달된 파일은 request 모듈의 files에 저장됩니다. 이를 다시보면 ..
flask.request.files.getlist("file[]")

getlist() 메소드를 사용하여 전달받은 파일을 변수로 저장하도록 하였습니다. 또한 file뒤에도 배열을 표시하는 []가 추가됩니다.


! 주의할 점앞에도 언급한 듯이 서버에서 배열로 전달받기 위해서는 html 입력폼에서 배열로 값을 전달해야합니다. 즉 input태그의 name 속성값의 뒤에 중괄호가 필요하니 꼭 추가하도록 합니다.

여기까지 멀티 업로드를 위한 방법을 알아봤습니다. 이제 파일 전송시 여러개를 보내서 전달 받을 수 있게되었습니다.