2016-03-31 17 views
1

私は自分のアプリケーション(ハイブリッド)を作成しています。登録ページでは、すべてのデータをDjango Rest Frameworkで作成したAPIに送信する必要があります。イメージをbase64で保存するdjango rest framework

問題は、プロファイル画像を送信できる唯一の方法は、base64でエンコードされた文字列です。しかし私は私のサーバー上でjpgのイメージが必要です。誰でも私はこれをどのようにすることができますか?

これは私のAPIのビューです:

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) 

そして、これは私のシリアライザです:

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

は、base64を取り、JPGを作成する方法はありますか?

+0

私は、スタック上の次のコードを自分のために解決策を見つけた - [http://stackoverflow.com/](http://stackoverflow.com/a/6781529/795622) – mexekanez

+1

'try' /' except KeyError: 'はちょっとしたことです。単純に 'get()'メソッドを使い、空の文字列をデフォルト値 'name = data.get( 'name'、 '')'として提供することができます。 – BlackJack

+0

ありがとう私は知らなかった=) –

答えて

2

あなたは、単に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() 
関連する問題