Задать вопрос
@NooooN
Секьюрник, гык. Лавки вебчик за 300.

Как сделать проверку загружаемых на сервер файлов на flask?

Приветики! Всех с 2018!) Появился вопросик, как сделать проверку на flask файла? МНе необходимо проверить, что файл png и если это не так выполнить одно условие и прекратить программу, а также сделать проверку что размер изображения должен быть 240 на 250 пикселей и опять же если не так вернуть ошибку.

Сейчас у меня следующий код:

import os
from flask import Flask, request, redirect, url_for
from werkzeug.utils import secure_filename

UPLOAD_FOLDER = '/var/www/html/sample0/files'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER


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

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = file.filename#secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return '''
            	<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
		  	    <script>
		  	    $.ajax({
		              url : 'http://mysait.com/sample0/upload.php',
		              success : function(data) {
		                document.body.innerHTML = data;
		            }
		        });
		        </script>
            '''

    return '''
    <script src="https://code.jquery.com/jquery-1.11.3.js"></script>
	    <script>
	    $.ajax({
          url : 'http://mysait.com/sample0/upload.php',
          success : function(data) {
            document.body.innerHTML = data;
        }
    });
    </script>

    '''

if __name__ == "__main__":
    app.run(debug=True)


Я так понимаю в ALLOWED_EXTENTION нужно оставить только png? Заранее спасибо за помощь!
  • Вопрос задан
  • 773 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
quaiby
@quaiby
Люблю Мунисфрут (Minecraft). Прошу не бить.
Тут вы правы, нужно оставить только png в AllowedExtensions, если вам надо только PNG-картинки, логично
А вот для определения размера, Вам скорее всего нужно будет парсить картинку какой-нибудь image-либой, или, как вариант, читать её метадату из бинарника.
Ответ написан
2ord
@2ord
При загрузке через HTTP POST будет получен content_type (Mime type). Нужно проверить является ли "image/png".
Насчёт остального: как ответил Михаил Олейников.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы