Атрибут size

Атрибут size класса File возвращает размер файла в байтах. Этот атрибут доступен только для чтения и позволяет быстро получить информацию о размере загруженного или сохраненного файла. Атрибут может возвращать целое число или None, если файл не существует или его размер не может быть определен.

Синтаксис

pythonfile_instance.size

Пример

Давайте создадим объект файла и получим его размер:

pythonfrom 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)

Результат выполнения кода:

python"13"

Пример

Давайте используем атрибут size для проверки размера загруженного файла в обработчике формы:

pythonfrom 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 в модели для отображения размера файла в читаемом формате:

pythonfrom 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())

Результат выполнения кода:

python"2.35 MB"

Смотрите также

  • класс File,
    который предоставляет базовые методы для работы с файлами
  • атрибут name,
    который возвращает имя файла
  • класс Storage,
    который предоставляет методы для управления файловым хранилищем
  • метод size,
    который возвращает размер файла в хранилище