English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Flask 파일 업로드

Flask에서 파일 업로드를 처리하는 것은 매우 간단합니다. enctype 속성이 'multipart'으로 설정되어야 합니다./form-'data'의 HTML 양식을 제출하여 지정된 URL에 문서를 제출합니다. URL 처리기는 request.files[] 객체에서 파일을 추출하여 필요한 위치에 저장합니다.

업로드된 각 파일은 먼저 서버의 일시적인 위치에 저장되고, 그 다음 최종 위치에 저장됩니다. 목표 파일의 이름은 고정될 수도 있고, request.files [file] 객체의 filename 속성에서 가져올 수도 있습니다. 그러나 secure_filename() 함수를 사용하여 안전한 버전을 가져오는 것이 좋습니다.

Flask 객체의 구성 설정에서 기본 업로드 폴더의 경로와 업로드 파일의 최대 크기를 정의할 수 있습니다.

변수설명
app.config[‘UPLOAD_FOLDER’]업로드 폴더의 경로를 정의합니다
app.config[‘MAX_CONTENT_PATH’]업로드할 파일의 최대 크기를 지정합니다 - 바이트 단위

다음 코드는 다음 URL을 가지고 있습니다: /upload 규칙, 이 규칙은 templates 폴더에 있는 upload.html 파일을 표시하며, uploader() 함수를 호출하여 업로드 과정을 처리하는 URL => /upload-file 규칙.

upload.html에는 파일 선택기 버튼과 제출 버튼이 있습니다.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Flask 예제</title>
 </head>
    <body>
      <form action="http://localhost:5000/upload" method="POST" 
          enctype="multipart/form-data">
          <input type="file" name="file"> />
          <input type="submit" value="제출">/>
       </form>
    </body>
 </html>

이와 같은 스크린샷을 보게 됩니다 -

파일을 선택한 후 클릭하세요 제출。 양식의 post 메서드가 URL을 호출합니다=> /upload_file. 밑위 함수 uploader()가 파일 저장 작업을 수행합니다.

다음은 Flask 애플리케이션의 Python 코드입니다.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask, render_template, request
 from werkzeug import secure_filename
 app = Flask(__name__)
 @app.route('/upload, methods=['GET', 'POST'])
 def upload_file():
     if request.method == 'POST':
         f = request.files['file']
         print(request.files)
         f.save(secure_filename(f.filename))
         return 'file uploaded successfully'
     else:
         return render_template('upload.html')
 if __name__ == '__main__':
     app.run(debug=True)

프로그램을 실행한 후, 위 코드를 실행하고 이미지 파일을 선택한 다음 업로드 버튼을 클릭하여 다음 결과를 얻습니다 -