我正在使用webcam.js在用户在我的模板上注册期间捕获用户的图像。
它会提示用户许可,如果同意,则在页面上启用“拍照”按钮。单击时,它会在用户的网络摄像头上拍摄快照。所有工作,直到将图片保存到 django 的 ImageField。
尽管它建议使用 AJAX(我在一百万年内无法理解)将其上传到我的服务器,但我已经进行了一些修改以通过隐藏的输入字段传递 base64 字符串。我还设法解码 base64 字符串并将其成功保存为服务器上的文件“.jpeg”。我希望将其从内存中保存,而不是将其写入磁盘。
在models.py 上,foto
是ImageField。我正在使用 Django 1.9.4 和 Postgres 9.4
说得够多了,这是我的编码尝试,它保存了除图像之外的所有内容:
视图.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" --->
关于如何在我看来管理 b64 字符串的任何建议?