【问题标题】:Convert blob to Django ImageField in python?在 python 中将 blob 转换为 Django ImageField?
【发布时间】:2016-11-05 06:42:09
【问题描述】:

我在 BLOB 文件中读取用户图像,但我想将其保存为 django 模型中的图像格式。 如何将此文件转换为图像文件(.jpeg)并将其保存在 django models.ImageField 中? 我使用 python 2.7 和 django 1.9。 我的模型是:

class Staff(models.Model):
    user = models.ForeignKey(User)
    cn =  models.CharField(max_length=100)

    new_comer = models.NullBooleanField()
    change_position = models.NullBooleanField()
    change_manager = models.NullBooleanField()
    acting = models.NullBooleanField()
    expelled = models.NullBooleanField()
    active = models.NullBooleanField()
    avatar = models.ImageField(upload_to='/images/')

请帮帮我...

【问题讨论】:

    标签: python django django-models blob


    【解决方案1】:

    你需要尝试这样的事情。

    import io
    from django.core.files.base import File
    
    # Set values of your model filed.
    staff_instance = Staff()
    staff_instance.user = user_instance
    ...
    ...
    
    with io.BytesIO(blob_file) as stream:
        django_file = File(stream)
        staff_instance.avatar.save(some_file_name, django_file)
    
    staff_instance.save()
    

    我假设 blob 是文件的字节数组。 要使其成为文件,我需要将其转换为流。 因此我认为BytesIO 会是一个不错的选择。

    您可以直接将文件保存到磁盘,但如果您希望 django 将其上传到您的upload_to 目录,则需要使用django.core.files.base.File 类。 当您运行django.core.files.base() 时,方法文件将保存到所需目录。

    我猜你会将它用于数据迁移过程,而不是在视图中。 如果是这种情况,您可以将此代码放在django command 中。 然后就可以使用任何 django 和项目相关的资源了。

    如果有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2010-10-05
      • 2019-07-28
      • 1970-01-01
      • 2021-06-19
      • 2015-04-01
      • 2015-03-14
      • 2018-10-07
      • 2014-07-27
      相关资源
      最近更新 更多