[python] Tornado를 사용한 파일 업로드 처리 방법

Tornado는 Python으로 작성된 비동기 웹 프레임워크로, 파일 업로드 처리를 포함한 다양한 기능을 제공합니다. 이번 블로그 포스트에서는 Tornado를 사용하여 파일 업로드를 처리하는 방법을 알아보겠습니다.

1. HTML 폼 작성하기

먼저, 파일을 업로드하기 위한 HTML 폼을 작성해야 합니다. 아래는 간단한 예시입니다.

<form action="/upload" enctype="multipart/form-data" method="post">
  <input type="file" name="file">
  <input type="submit" value="Upload">
</form>

enctypemultipart/form-data로 설정하여 파일 업로드를 지원하도록 해야합니다.

2. Tornado 핸들러 작성하기

다음으로, Tornado 핸들러를 작성하여 파일을 업로드하는 로직을 처리해야 합니다. 아래는 파일 업로드를 처리하는 핸들러의 예시입니다.

import tornado.ioloop
import tornado.web

class UploadHandler(tornado.web.RequestHandler):
    def post(self):
        file = self.request.files['file'][0]
        filename = file['filename']
        
        with open(filename, 'wb') as f:
            f.write(file['body'])
        
        self.write('File uploaded successfully.')

app = tornado.web.Application([
    (r"/upload", UploadHandler),
])

if __name__ == "__main__":
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

위의 예제에서는 post 메소드를 통해 실제 파일 업로드를 처리합니다. 파일은 self.request.files 딕셔너리를 통해 얻을 수 있으며, 파일의 이름과 바이너리 데이터에 접근할 수 있습니다. 이후, 업로드된 파일을 디스크에 저장하거나 다른 작업을 수행할 수 있습니다.

3. 서버 실행하기

위의 핸들러 코드를 실행하면 Tornado 서버가 8888 포트에서 실행됩니다. 웹 브라우저에서 http://localhost:8888으로 접속하여 업로드 폼을 확인해보세요. 파일을 선택한 후 “Upload” 버튼을 클릭하면 파일이 업로드되고, 결과 메시지가 나타나게 됩니다.

마무리

이번 블로그 포스트에서는 Tornado를 사용하여 파일 업로드를 처리하는 방법을 알아보았습니다. Tornado의 강력한 비동기 웹 프레임워크 기능을 활용하여 파일 업로드 기능을 간단하게 구현할 수 있습니다. 자세한 내용은 Tornado 공식 문서‘를 참조하시기 바랍니다.