2012-05-06 29 views
3

私は自分のウェブサイトのユーザープロファイルアバターを扱うためにdjango-avatarsを使用しています。私は現在、サイト用のネイティブAndroidアプリを開発しています。これには、ユーザーがアバターをアップロードする機能が含まれています。私は画像をデコードするbase64経由でファイルをアップロード

data = base64.b64decode(request.POST['data'])  
out = open("etc/test.jpeg", "wb") 
out.write(data) 
out.close() 

を持って、私のDjangoのビューではベース64でエンコードされたGETパラメータ経由で画像データを渡しています。これはうまくいきます(test.jpegは私が望むファイルです)、これをdjango-avatarsに結びつけるのに問題があります。

次は、新しいアバターを作成するために使用され、ジャンゴ・アバターのソースを通してみる:

avatar = Avatar(
    user = request.user, 
    primary = True, 
) 
image_file = request.FILES['avatar'] 
avatar.avatar.save(image_file.name, image_file) 
avatar.save() 

私の質問は、私は必要なrequest.FILES形式に私のファイルのデータを変換する方法、です、(または私のフォーマットを受け入れるためにsaveメソッドを書き直す最も簡単な方法は何ですか?

答えて

5

request.FILES要素はラッパーのファイルのようです。ファイルデータをStringIOに貼り付け、django.core.files.Fileコンストラクタに渡して、からsave()に渡します。

+0

django Fileオブジェクトの作成に問題があります。私はavatar.avatar.save()行でこのエラーを生成するhttp://dpaste.com/743542/を持っています:http://dpaste.com/743541/ – numegil

+0

データの長さを割り当てる必要がありますStringIOオブジェクトの 'size'属性に追加します。 –

+0

素晴らしい、ありがとう! – numegil

関連する問題