1

I'm working on my app (hybrid) and on the register page I have to send all the data to an API made with Django Rest Framework.

The problem is that the only way I can send the profile picture is in base64 encoded string. But I need the image in jpg on my server. Anyone knows how can I do this?

This is my api View:

 class CreateUserView(generics.CreateAPIView):
    serializer_class = UserSerializer
    permission_classes = [AllowAny]
    queryset = User.objects.all().order_by('-date_joined')
    def post(self, request, *args, **kwargs):
        error = 0
        data = request.data

        try:
            name = data['name']
        except KeyError:
            name = ""

        try:
            last_name = data['last_name']
        except KeyError:
            last_name = ""

        # IMAGE IN BASE64    
        try:
            profile_picture = data['profile_picture']
        except KeyError:
            profile_picture = ""

        try:
            username = data['username']
        except KeyError:
            username = ""

        try:
            created_user = User.objects.create(
                first_name = nombre,
                last_name = last_name,
                username = username
            )

            # created_user.set_password(password)
            created_user.save()
            token = Token.objects.create(user=created_user)
        except IntegrityError:
            error = 1

        return Response(error)

And this is my Serializer:

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'first_name', 'last_name', 'email', 'groups')

Is there any way to take the base64 and create a jpg?

Marcos Aguayo
  • 6,840
  • 8
  • 28
  • 61

1 Answers1

4

You can simply use base64.decodestring:

from base64 import decodestring

fh = open("imageToSave.jpeg", "wb")
fh.write(str(base64_string).decode('base64')) # or fh.write(decodestring(base64_string))
fh.close()
JRodDynamite
  • 12,325
  • 5
  • 43
  • 63