webdev,

Implementing File Upload

Dahna Dahna Follow Mar 01, 2024 · 1 min read
Implementing File Upload
Share this

파일 업로드 구현

  • templates 디렉토리 생성
  • upload.html 작성 : 사용자가 파일을 업로드할 수 있도록 HTML 폼을 만듦
    2

  • 저장할 디렉토리 생성
  • 파일 업로드를 처리할 Flask뷰 함수 작성

1

app.config : Flask의 내장 객체로 애플리케이션의 구성을 위한 변수들을 저장하는 데 사용. 딕셔너리 형태의 객체를 통해 애플리케이션 설정을 동적으로 조정할 수 있으며,
예를 들어 데이터베이스 설정, 애플리케이션 비밀 키, 파일 업로드 관련 설정 등을 포함할 수 있다.

  • 파일 업로드 폼을 반환하는 뷰
    return render_template('upload.html') : templates 디렉토리 내에 위치한 upload.html 템플릿 파일을 렌더링하여 클라이언트에게 보여줌
  • 파일 업로드 처리하는 뷰
    secure_filename(file.filename) : 업로드된 파일의 이름을 가져와서 안전한 파일 이름으로 변환. 파일 시스템에서 문제를 일으킬 수 있는 문자를 제거하거나 변환한다.
    os.path.join(...) : 파이썬의 os 모듈에 포함된 함수로, 주어진 경로들을 적절한 경로 구분자로 결합하여 운영 체제에 맞는 전체 경로를 생성함.
    운영 체제 간의 호환성을 보장하며, 경로를 수동으로 결합할 때 발생할 수 있는 오류를 방지한다. filename : 안전하게 처리된 업로드 파일 이름

🌿 추가해야 할 기능 : 파일 종류 검증


파일 시스템에 이미지 저장 & 파일 경로를 데이터베이스에 저장하기

  • MySQL 작성
    CREATE DATABASE IF NOT EXISTS imagedata;  
    USE imagedata;  
    CREATE TABLE IF NOT EXISTS images (  
      id INT AUTO_INCREMENT PRIMARY KEY,  
      file_path VARCHAR(255) NOT NULL,  
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP  
    );  
    

pip3 install mysql-connector-python : mysql-connector-python패키지 설치 후 import

  • 데이터베이스 연결 설정
    db = mysql.connector.connect(  
      host="127.0.0.1",  
      user="root",  
      password="123456789",  
      database="imagedata"  
    )  
    cursor = db.cursor()  
    
  • 데이터베이스에 파일 경로 저장
    def upload_file() if file:문에 아래와 같이 추가
    cursor.execute("INSERT INTO images (file_path) VALUES (%s)", (file_path,))  
    db.commit()  
    

    4

3

웹 개발에서 뷰(View)란
MVC(Model-View-Controller) 또는 MTV(Model-Template-View) 패턴의 일부로 사용되는 용어.
애플리케이션의 구조를 조직화하는 데 도움을 주며, 각 부분이 서로의 역할을 분명히 하도록 한다.

Dahna
Written by Dahna Follow
Hi, I am Dahna, the author of this blog!