[파이썬] 파일의 디렉토리 내 파일 업로드

파일 업로드는 웹 애플리케이션에서 자주 사용되는 기능 중 하나입니다. 사용자가 웹페이지를 통해 파일을 선택하고 서버로 업로드할 수 있도록 해주는 기능인데요. 이번 포스트에서는 Python을 사용하여 파일의 디렉토리 내 파일을 업로드하는 방법에 대해 알아보겠습니다.

Flask 웹 프레임워크

파이썬 개발자들이 웹 애플리케이션을 빠르게 개발하고 배포할 수 있도록 도와주는 Flask 웹 프레임워크를 사용하겠습니다. Flask는 가볍고 간단한 구조로 되어 있어 초보자에게도 쉽게 접근할 수 있습니다.

업로드 폼 생성

먼저, 업로드 폼을 생성해야 합니다. HTML의 <form> 태그를 사용하여 업로드 폼을 만들 수 있습니다. Flask에서는 Flask.request.files를 사용하여 파일 업로드를 처리합니다.

<form action="/upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="업로드">
</form>

위의 코드는 파일 선택을 위한 <input type="file">과 업로드 버튼을 가지고 있는 간단한 업로드 폼입니다.

파일 업로드 처리

이제 파일을 업로드하는 로직을 작성해야 합니다. Flask에서는 업로드된 파일을 Flask.request.files로부터 가져와 처리할 수 있습니다.

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    file.save('uploads/' + file.filename)
    return '파일이 정상적으로 업로드되었습니다.'

if __name__ == '__main__':
    app.run()

위의 코드는 /upload 경로로 POST 요청이 오면 업로드된 파일을 uploads/ 디렉토리에 저장하는 간단한 예제입니다. 업로드된 파일은 file이라는 이름으로 Flask의 request.files에서 가져올 수 있습니다.

파일 업로드 경로 설정

위의 예제에서는 업로드된 파일을 uploads/ 디렉토리에 저장했습니다. 디렉토리 이름을 원하는 대로 수정할 수 있습니다. 다만, 반드시 해당 디렉토리가 존재하는지 확인해야 합니다. 존재하지 않는 디렉토리에 파일을 저장하려고 하면 오류가 발생할 수 있습니다.

보안 고려사항

파일 업로드 시 보안에 주의해야 합니다. 악의적인 사용자가 악성 파일을 업로드하여 서버에 피해를 줄 수 있습니다. 따라서, 파일 업로드 전에 파일의 유효성을 검증하고, 허용되지 않은 파일 확장자를 차단하는 등의 보안 처리가 필요합니다.

결론

이번 포스트에서는 Python을 사용하여 파일의 디렉토리 내 파일 업로드하는 방법에 대해 알아보았습니다. Flask 웹 프레임워크를 사용하여 간단한 업로드 폼을 생성하고 파일을 업로드하는 로직을 작성하는 방법을 소개했습니다. 파일 업로드 시 보안에 주의하여 악의적인 파일 업로드로부터 서버를 보호하는 것이 중요합니다.

Happy coding!