6

Base64でエンコードされたテキストとして渡された画像をDjangoImagefieldに保存しようとしています。

しかし、正しく保存されていないようです。データベースは、すべての画像がファイル名として報告する必要があるときに「」として保存されていることを報告します。次に例を示します。

"template_images/template_folders/myImage.png"

画像を保存しようとしているコードは次のとおりです。

elif model_field.get_internal_type() == "ImageField" or model_field.get_internal_type() == "FileField":  # Convert files from base64 back to a file.
    if field_elt.text is not None:
        setattr(instance, model_field.name, File(b64decode(field_elt.text)))
4

3 に答える 3

28

この答えを読んだ後、私はこれを機能させました:

from base64 import b64decode
from django.core.files.base import ContentFile

image_data = b64decode(b64_text)
my_model_instance.cool_image_field = ContentFile(image_data, 'whatup.png')
my_model_instance.save()

したがって、コードを次のように変更することをお勧めします。

from django.core.files.base import ContentFile

# Your other code...

elif model_field.get_internal_type() == "ImageField" or model_field.get_internal_type() == "FileField":  # Convert files from base64 back to a file.
    if field_elt.text is not None:
        image_data = b64decode(field_elt.text)
        setattr(instance, model_field.name, ContentFile(image_data, 'myImage.png'))

次に、引数をに設定しImageFieldて定義されていると仮定すると、ファイルがに保存されていることがわかります。upload_totemplate_images/template_folders/YOUR_MEDIA_URL/template_images/template_folders/myImage.png

于 2013-03-13T03:22:30.050 に答える