Атрибут size
Атрибут size класса File возвращает размер файла в байтах.
Этот атрибут доступен только для чтения и позволяет быстро получить
информацию о размере загруженного или сохраненного файла.
Атрибут может возвращать целое число или None, если файл не существует
или его размер не может быть определен.
Синтаксис
file_instance.size
Пример
Давайте создадим объект файла и получим его размер:
from django.core.files.base import File
from django.core.files.temp import NamedTemporaryFile
from django.core.files import File as DjangoFile
# Create a temporary file with some content
temp_file = NamedTemporaryFile()
temp_file.write(b"Hello, World!")
temp_file.seek(0)
# Create Django File object
file_obj = File(temp_file)
# Get file size
res = file_obj.size
print(res)
Результат выполнения кода:
"13"
Пример
Давайте используем атрибут size для проверки размера загруженного файла
в обработчике формы:
from django.core.files.uploadedfile import UploadedFile
from django.shortcuts import render
def handle_upload(request):
if request.method == "POST":
uploaded_file = request.FILES["document"]
file_size = uploaded_file.size
if file_size > 2 * 1024 * 1024:
return render(request, "error.html", {
"message": "File size exceeds 2 MB"
})
# Process the file
return render(request, "success.html", {
"size": file_size
})
return render(request, "upload.html")
Пример
Давайте используем атрибут size в модели для отображения размера файла
в читаемом формате:
from django.db import models
from django.core.files import File
class Document(models.Model):
title = models.CharField(max_length=100)
file = models.FileField(upload_to="documents/")
def get_size_display(self):
size_bytes = self.file.size
if size_bytes is None:
return "0 bytes"
if size_bytes < 1024:
return f"{size_bytes} bytes"
elif size_bytes < 1024 * 1024:
return f"{size_bytes / 1024:.2f} KB"
else:
return f"{size_bytes / (1024 * 1024):.2f} MB"
# Usage example
doc = Document.objects.get(id=1)
print(doc.get_size_display())
Результат выполнения кода:
"2.35 MB"