웹 백엔드/Django & Flask

Flask(플라스크) - 파이썬 Flask 파일 업로드(file upload) 예제 및 소스파일

2018. 6. 20. 14:36
목차
  1. Flask 관련 포스팅  :  Flask 관련
  2. 파이썬(Python) Flask - 파일 업로드 예제 소스


파이썬(Python) Flask - File upload



오늘은 파이썬 Django(장고)와 더불어 대표적인 웹 프레임워크인 Flask 에서 가장 빈번하게 질문이
올라오는 파일 업로드 사용법에 대해서 알아보겠습니다.


설치 시에 대부분의 기능을 지원하는 중량 프레임워크인 Django에 비해서 Flask는 아무것도 없는 초기
기본 레이아웃 형태로 설치가 지원되고 있습니다.

Flask는 매우 가볍고 심플하고 경량화를 추구하는 철학때문에 필요한 패키지들을 별도로 사용자가
설치하거나 직접 개발해서 사용해야 합니다.

쉽게 이야기 하면 많은 곳에서 활용하고 있는 자유도가 대단히 높은 프레임워크라고 볼 수 있습니다. 

그러면 문서 하단에서 간단하게 예제를 작성해보겠습니다.

Flask 관련 포스팅  :  Flask 관련

파이썬(Python) Flask - 파일 업로드 예제 소스


플라스크 파일 업로드 기능 구현을 위해서 upload.html 파일을 플라스크에서 template 렌더링 후 선택한
파일을 지정한 경로로 업로드 해보는 예제 소스 입니다.

upload.html

1
2
3
4
5
6
7
8
9
<html>
   <body>
      <form action = "http://localhost:5000/fileUpload" method = "POST"
         enctype = "multipart/form-data">
         <input type = "file" name = "file" />
         <input type = "submit"/>
      </form>
   </body>
</html>
Colored by Color Scripter
cs

- 3번 라인 : html form 태그 사용 -> enctype -> multipart/form-data 확인
- 6번 라인 : form submit 적용


flask_upload.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from flask import Flask, render_template, request
from werkzeug import secure_filename
app = Flask(__name__)
 
#업로드 HTML 렌더링
@app.route('/upload')
def render_file():
   return render_template('upload.html')
 
#파일 업로드 처리
@app.route('/fileUpload', methods = ['GET', 'POST'])
def upload_file():
   if request.method == 'POST':
      f = request.files['file']
      #저장할 경로 + 파일명
      f.save(secure_filename(f.filename))
      return 'uploads 디렉토리 -> 파일 업로드 성공!'
 
if __name__ == '__main__':
    #서버 실행
   app.run(debug = True)
cs

- 1,2번 라인 : flask 및 관련 패키지 import
- 3번 라인 : Flask 객체(인스턴스) app 할당
- 7번 라인 : 브라우저 주소창에 /upload 요청 시에 upload.html 렌더링 하는 함수 선언
- 12번 라인 : upload.html 에서 form submit 시에 request 된 파일 데이터를 처리하는 함수
- 21번 라인 : 서버 실행(디버그 모드 True)
- 기본적으로 Root 디렉토리에 Templates 폴더 및 upload 폴더 생성 필요

Flask File Upload의 추가적인 상세 설명은 이 곳을 참고해 주세요.



파이썬(Python) Flask
 - 파일 업로드 실행 화면


아래 이미지로 프로젝트 폴더 구조(확인 중요) 및 실제 실행 화면을 확인하실 수 있습니다.



실제 실행 화면

Flask 공식 Reference  :  Flask 관련



마무리


이번 포스팅에서는 파이썬 플라스크 프레임워크를 활용해서 간단한 파일 업로드 테스트를 진행했습니다.

경량화를 추구하는 마이크로 프레임워크인 플라스크는 프로젝트가 진행 될 수록 단점이 두드러지는 경향이

있습니다. 검증되지 않은 많은 패키지를 설치하는 것도 원인이 될 수 있겠습니다.


하지만, 직관적이고 생산성이 가장 높은 언어로 생각되는 파이썬 플라스크를 활용해서 아주 빠르게 

원하는 웹 페이지를 작성하고 나아가 웹 어플리케이션을 편하게 제작할 수 있는 큰 장점이 있습니다.

첨부된 소스코드를 다운받아서 반드시 한 번 실행 해보시는 것을 추천드립니다.

다음 시간에도 플라스크(Flask)의 다양한 기능 및 도움이 되는 기능을 포스팅 하도록 하겠습니다.

소스코드 다운로드 :  flask_upload.zip




저작자표시 동일조건 (새창열림)

'웹 백엔드 > Django & Flask' 카테고리의 다른 글

Django(장고) - 로깅(Logging) 설정 및 DB SQL 쿼리(Query) 확인  (0) 2019.02.14
Flask(플라스크) - 파이썬 Flask 기본 템플릿(template) 예제 및 소스파일  (1) 2018.06.22
Flask(플라스크) - 파이썬 Flask RestFul API 서버 작성 예제 및 다운로드  (0) 2018.01.21
Django(장고) - 로깅(Logging) 설정 및 로그(Log)파일로 저장  (0) 2017.10.09
Django(장고) - 에러 페이지 처리(커스터마이징 404, 500 외)  (1) 2017.09.08
  1. Flask 관련 포스팅  :  Flask 관련
  2. 파이썬(Python) Flask - 파일 업로드 예제 소스
'웹 백엔드/Django & Flask' 카테고리의 다른 글
  • Django(장고) - 로깅(Logging) 설정 및 DB SQL 쿼리(Query) 확인
  • Flask(플라스크) - 파이썬 Flask 기본 템플릿(template) 예제 및 소스파일
  • Flask(플라스크) - 파이썬 Flask RestFul API 서버 작성 예제 및 다운로드
  • Django(장고) - 로깅(Logging) 설정 및 로그(Log)파일로 저장
[좋은사람]
[좋은사람]
좋은사람의 개발 노트 입니다.
[좋은사람]
좋은사람의 개발 노트
[좋은사람]
전체
오늘
어제
  • 전체보기 (189)
    • 언어 (68)
      • Java (12)
      • Python (39)
      • C# (5)
      • PHP (4)
      • Go (8)
    • OS (18)
      • Linux (7)
      • Windows 10 (5)
      • Etc (6)
    • 빅데이터 & 분석 (8)
      • R (0)
      • Machine Learning (8)
    • 네트워크 (4)
      • Etc (4)
    • 웹 프론트 (25)
      • Javascript & ECMA (8)
      • Vue (13)
      • React (4)
    • 웹 백엔드 (15)
      • Spring (3)
      • Django & Flask (7)
      • Npm & Express (5)
    • 개발도구 (18)
      • Jetbrains (3)
      • Eclipse (5)
      • Git (4)
      • Atom & VScode (6)
    • 데이터베이스 (7)
      • Oracle (2)
      • MariaDB & MySQL (2)
      • Etc (3)
    • 모바일 (6)
      • Android (3)
      • Hybrid (3)
    • 라이프 (20)
      • 여행 & 일상 (6)
      • 취미 (14)

블로그 메뉴

  • 홈으로
  • 블로그소개
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 아톰 에디터
  • npm
  • CFW
  • 머신러닝
  • Algorithm
  • Java
  • 커펌
  • python
  • SpringSTS
  • 3DS
  • Git
  • windows10
  • 2DS
  • 개발자 면접
  • ubuntu
  • 윈도우10
  • javascript
  • Anaconda
  • Database
  • react
  • php
  • centos
  • OCR
  • Thread
  • flask
  • nodejs
  • ATOM
  • C#
  • 미뮤
  • Django
  • 디자인패턴
  • 리액트
  • 코딩 면접
  • go
  • vue.js
  • 인텔리j
  • Eclipse
  • ps4
  • Linux
  • 이클립스

최근 댓글

최근 글

hELLO · Designed By 정상우.
[좋은사람]
Flask(플라스크) - 파이썬 Flask 파일 업로드(file upload) 예제 및 소스파일
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.