python - meaning - Guardar la carga en el Frasco solo se guarda en la raíz del proyecto
flask wikipedia (1)
Cuando cargo un archivo nuevo, se guarda en la carpeta raíz de la aplicación, aunque especifiqué una UPLOAD_FOLDER
diferente. ¿Por qué no funciona la configuración?
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
UPLOAD_FOLDER
no es una opción de configuración reconocida por Flask. f.save
funciona en relación con el directorio de trabajo actual, que suele ser la raíz del proyecto durante el desarrollo.
Une el nombre de archivo seguro a la carpeta de carga y luego guárdalo en esa ruta.
f.save(os.path.join(app.config[''UPLOAD_FOLDER''], secure_filename(f.filename)))
Es mejor almacenar datos locales en la carpeta de la instancia, no en la raíz del proyecto. Flask ya sabe dónde está eso. Solo asegúrate de crear primero el directorio de la instance
.
f.save(os.path.join(app.instance_path, ''htmlfi'', secure_filename(f.filename)))