Как передать аудиозапись с RecorderJS к Django?
Хочу передать запись записанную с микрофона к Django. Но тут появляется проблема в сообщение о:
CSRF token missing or incorrect
. Я понял что это ошибка в processData: false. Когда я ее убираю, все работает. Но когда я убираю processData появляется новая ошибка:
TypeError: 'append' called on an object that does not implement interface FormData.
Что мне делать? Как предать Django аудизапись?
console.log("Остановка записи")
rec.stop()
gumStream.getAudioTracks()[0].stop();
$('#btnToStopRecord').attr('id', 'btnToRecord');
$("#toMessage").prop('disabled', false).attr('placeholder', "Введите сообщение...")
rec.exportWAV(function (blob) {
let data = new FormData()
data.append('csrfmiddlewaretoken', '{{ csrf_token }}')
data.append('audio', blob)
console.log(data)
$.ajax({
type: "POST",
contentType: false,
cache:false,
url: '{% url 'sendtext' %}',
data: {
'audioFile': data,
'csrfmiddlewaretoken' : '{{ csrf_token }}',
},
})
})
Ответы (1 шт):
Автор решения: Vadim.Sharoikin
→ Ссылка
у вас уже в FormData передан csrf_token. передавайте сразу data: data
console.log("Остановка записи")
rec.stop()
gumStream.getAudioTracks()[0].stop();
$('#btnToStopRecord').attr('id', 'btnToRecord');
$("#toMessage").prop('disabled', false).attr('placeholder', "Введите сообщение...")
rec.exportWAV(function (blob) {
let data = new FormData()
data.append('csrfmiddlewaretoken', getCookie('csrftoken'))
data.append('audio', blob)
console.log(data)
$.ajax({
type: "POST",
processData: false,
contentType: false,
cache:false,
url: '{% url 'sendtext' %}',
data: data, поменять на
})
})
и добавить формирование токена csrf
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}