webcam.js私は自分のテンプレートにユーザーが登録されている間にユーザーの画像をキャプチャしています。Django Imagefieldに一時的な画像(メモリb64文字列内)を保存
ユーザーの許可を求め、同意する場合は、ページ上の「写真を撮る」ボタンを有効にします。クリックすると、ユーザーのウェブカメラでスナップショットが作成されます。 djangoのImageFieldに画像を保存するまではすべて動作します。
私はAJAX(これは何百万年にもわたっては理解できません)を使用してサーバーにアップロードすることをお勧めしますが、非表示の入力フィールドでbase64文字列を渡すように少し修正しました。私はbase64の文字列をデコードし、それをサーバ上のファイル '.jpeg'として正常に保存することもできました。 私はそれをディスクに書き込まずにメモリから保存したいと思います。
models.pyでは、foto
がImageFieldです。
views.py
class view1(View):
def post(self, request, *args, **kwargs):
form = UserForm(request.POST or None)
form.foto = b64decode(request.POST['foto'][-(len(request.POST['foto']) - 24):])
#decoding 'foto' received from POST, some stripping is needed
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return HttpResponseRedirect()
else:
return HttpResponseRedirect()
テンプレート
<form>
<input type='submit' value="Submit">
<input type='hidden' id='foto' name='foto'>
</form>
<!--- JS from webcam.js takes picture and pass b64 string to #foto--->
<!--- document.getElementById('foto').value="'"+data_uri+"'"; added to function "take_snapshot" --->
:私はここに画像以外のすべてを保存し、私のコーディングの試みだ、
十分な話ジャンゴ1.9.4およびPostgresの9.4を使用しています
私のビューでb64文字列を管理する方法に関する提案はありますか?