Получить размер загружаемого файла в приложении Django - PullRequest
1 голос
/ 21 июня 2019

Я бы хотел показать в шаблоне размер файла, который загрузил пользователь. Я вижу, что файловый объект имеет размер атрибута, но, поскольку я новичок в Python и в области разработки, мне было трудно понять, как я могу его использовать.

После некоторого теста я разработал этот скрипт ( filesize ), чтобы добавить в конце модели, с которой вы можете загрузить файл:

class FileUpload(models.Model):
    name = models.CharField(
        max_length=50,
        )
    description = models.TextField(
        max_length=200,
        blank=True,
        )
    file = models.FileField(
        upload_to='blog/%Y/%m/%d'
        )

    def __str__(self):
        return self.name

    @property
    def filesize(self):
        x = self.file.size
        y = 512000
        if x < y:
            value = round(x/1000, 2)
            ext = ' kb'
        elif x < y*1000:
            value = round(x/1000000, 2)
            ext = ' Mb'
        else:
            value = round(x/1000000000, 2)
            ext = ' Gb'
        return str(value)+ext

Теперь просто назвать размер файла.

enter image description here

Я делюсь этим, потому что надеюсь, что это кому-нибудь пригодится. Я спрашиваю: есть лучшее решение?

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Вы можете решить эту проблему с помощью этого пользовательского тега шаблона: https://djangosnippets.org/snippets/1866/

Затем используйте его в своем шаблоне так:

{% load sizify  %}

{{ yourFile.size|sizify }}

Размер файла будет показан в видечитаемый человеком формат (кб, мб, гб)

0 голосов
/ 21 июня 2019

Вы можете использовать модуль OS Python, чтобы получить размер загруженного файла, например os.path.getsize('Your file path')

...