[PYTHON] 플라스크에 업로드 저장은 프로젝트 루트에만 저장됩니다.
PYTHON플라스크에 업로드 저장은 프로젝트 루트에만 저장됩니다.
새 파일을 업로드하면 다른 UPLOAD_FOLDER를 지정했지만 응용 프로그램 루트 폴더에 저장됩니다. 구성이 작동하지 않는 이유는 무엇입니까?
views.py:
from flask import render_template
from flask import request, redirect, url_for,flash
from werkzeug.utils import secure_filename
from app import app
import os
APP_ROOT = os.path.dirname(os.path.abspath(__file__))
UPLOAD_FOLD = '/Users/blabla/Desktop/kenetelli/htmlfi'
UPLOAD_FOLDER = os.path.join(APP_ROOT, UPLOAD_FOLD)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def tmrf():
return render_template('main.html')
@app.route('/uploader', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['file']
f.save(secure_filename(f.filename))
return 'file uploaded successfully'
__init__.py:
from flask import Flask
UPLOAD_FOLDER = ''
ALLOWED_EXTENSIONS = set('*.doc')
app = Flask(__name__)
app.config.from_object('config')
from app import views
해결법
-
==============================
1.UPLOAD_FOLDER은 Flask가 인식하는 구성 옵션이 아닙니다. f.save는 현재 작업 디렉토리 (일반적으로 개발 중에 프로젝트 루트)에 상대적으로 작동합니다.
UPLOAD_FOLDER은 Flask가 인식하는 구성 옵션이 아닙니다. f.save는 현재 작업 디렉토리 (일반적으로 개발 중에 프로젝트 루트)에 상대적으로 작동합니다.
보안 폴더 이름을 업로드 폴더에 결합한 다음 해당 경로에 저장하십시오.
f.save(os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(f.filename)))
프로젝트 루트가 아닌 인스턴스 폴더에 로컬 데이터를 저장하는 것이 좋습니다. 플라스크는 이미 그 위치를 알고 있습니다. 먼저 인스턴스 디렉토리를 작성하십시오.
import os from werkzeug.utils import secure_filename # create the folders when setting up your app os.makedirs(os.path.join(app.instance_path, 'htmlfi'), exist_ok=True) # when saving the file f.save(os.path.join(app.instance_path, 'htmlfi', secure_filename(f.filename)))
저장 위치에 관계없이 응용 프로그램을 실행하는 사용자에게 해당 디렉토리에 대한 쓰기 권한이 있는지 확인해야합니다. 예를 들어 mod_wsgi로 실행할 때 권한 오류가 발생하면 일반적으로 사용자는 httpd 또는 www-data입니다. 권한 거부 오류가 발생하면이를 확인하십시오.
from https://stackoverflow.com/questions/42424853/saving-upload-in-flask-only-saves-to-project-root by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 쿼리에 테이블 이름을 삽입하면 sqlite3.OperationalError : near "?": 구문 오류가 발생합니다. (0) | 2018.10.05 |
---|---|
[PYTHON] 파이 게임 버튼 한 번 클릭 (0) | 2018.10.05 |
[PYTHON] 파이썬 time.sleep (0) | 2018.10.05 |
[PYTHON] 한 목록의 요소를 변경하면 여러 목록이 변경됩니다. [중복] (0) | 2018.10.05 |
[PYTHON] regex href 속성에서 HTML에서 파이썬으로 URL을 추출하는 [duplicate] (0) | 2018.10.05 |