Я использую webcam.js для захвата изображения пользователя при регистрации пользователя на моем шаблоне.Сохранение временных (в памяти строки b64) изображение в Django Imagefield
Он запрашивает у пользователя разрешение и, по договоренности, включите кнопку «Снять изображение» на странице. При щелчке на веб-камере пользователя выполняется моментальный снимок. Все работает, пока не сохранит изображение на ImageField django.
Хотя он рекомендует использовать AJAX (который я не могу понять за миллион лет), чтобы загрузить его на свой сервер, я немного изменил, чтобы передать строку base64 через скрытое поле ввода. Мне также удалось декодировать строку base64 и сохранить его как файл «.jpeg» на сервере успешно. Я хочу сохранить его из памяти, не записывая его на диск.
На models.py, foto
is ImageField. Я использую Django 1.9.4 и Postgres 9.4
Хватит говорить, вот моя попытка кодирования, которая сохраняет все, кроме изображения:
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" --->
Любые предложения по управлению строкой b64 на моем представлении?