Атрибут content_length
Атрибут content_length применяется к объекту
FileStorage, который Flask создаёт при получении
файла из формы. Атрибут возвращает размер файла
в байтах в виде целого числа. Значение берётся из
заголовка Content-Length HTTP-запроса.
Если размер неизвестен, атрибут возвращает None.
Атрибут доступен только для чтения. Он удобен для проверки размера файла до его сохранения на диск, например, чтобы отклонить слишком большие файлы.
Синтаксис
file.content_length
Пример
Давайте выведем размер загруженного файла в ответ сервера. Сначала создадим форму для загрузки:
<form method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
Теперь напишем обработчик, который принимает файл и возвращает его размер:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
file = request.files['file']
return f"Size: {file.content_length} bytes"
return render_template('index.html')
Результат выполнения кода для файла размером 12 байт:
Size: 12 bytes
Пример
Давайте проверим размер файла и отклоним его, если он превышает лимит:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
file = request.files['file']
if file.content_length > 1024:
return 'File too large'
return 'File accepted'
return render_template('index.html')
Результат выполнения кода для файла размером 2048 байт:
File too large
Смотрите также
-
класс
FileStorage,
который представляет загруженный файл -
атрибут
filename,
который хранит имя загруженного файла -
атрибут
content_type,
который хранит MIME-тип загруженного файла -
метод
save,
который сохраняет загруженный файл на диск