Выберите только тип файла .csv для загрузки в Flask - PullRequest
0 голосов
/ 11 февраля 2020

Как я могу ограничить загрузку Flask, чтобы разрешить загрузку только .csv файлов? Я пытался, но не могу этого сделать.

Пока мне удалось заблокировать ВСЕ ФАЙЛЫ или загрузить все из них. Мне нужно загрузить только .csv файлов.

Вот что я пробовал:

UPLOAD_FOLDER = "/Users/osito/Desktop/efisys-git/efisys/Webb_App/static/archivos"
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

ALLOWED_EXTENSIONS = set(['csv'])

def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route("/carga", methods=["GET", "POST"])
def carga():
if request.method == "POST":  
archivo = request.form['archivo']  
    if archivo.filename == "":
        flash(u"NO selected file", 'error')
    if not allowed_files(archivo.filename):
        flash(u'only csv files', 'error')                                              

    return redirect(request.url)  
return render_template('home.html')

И это HTML ..

<input id="upload" type="file" name="file" onchange="readURL();"/>
<form action="/carga" method="POST" enctype="multipart/form-data">
    <h2>Suba Aquí su Archivo CSV </h2>
    <div class="form-group area">
        <input type="hidden" class="form-control" name="archivo" id="archivo">
    </div>
    <button type="submit" name="archivo" class="btn btn primary">Subir</button>
</form>

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Такое условие может помочь:

if filename.rsplit('.', 1)[1].lower()=='csv':
# >>> process file here <<<

РЕДАКТИРОВАТЬ: Тем временем я вижу, что вы добавили еще немного кода. У вас есть функция с именем allowed_file. Но вы звоните по адресу allow_file s дальше вниз:

if not allowed_files(archivo.filename):
        flash(u'only csv files', 'error')

Это то, что вы делаете неправильно или это просто опечатка в вопросе?

0 голосов
/ 11 февраля 2020

Вы можете проверить эту статью: D

https://flask.palletsprojects.com/en/1.1.x/patterns/fileuploads/

Есть пример, который позволяет вам указать разрешенные расширения

ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}

Поэтому попробуйте заменить его одним входом, который CSV в вашем случае

...