2016-08-15 40 views
0

我一直在牆上用頭撞牆頭數小時。我試圖用recorder.js使用源從這個例子https://webaudiodemos.appspot.com/AudioRecorder/django發佈請求未在終端顯示javascript blob對象

現在我想修改它,以便用戶將聽到音頻回放給他們,然後在y將不得不把它上傳到服務器,如果有機會他們喜歡它。通過將方法createObjectURL(blob)的返回添加到音頻元素,我得到了要播放的音頻。 GREAT

現在我只需寫一個post請求並將其發送到我的django實例,以便在視圖中處理它...這就是它變得奇怪的地方。

我用jQuery來發布這樣一個Ajax請求......

$(document).ready(function() { 
    $("#submit_audio_file").click(function() { 
    var data = new FormData(); 
    data.append("csrfmiddlewaretoken", $("[name=csrfmiddlewaretoken]").val()); 
    data.append("audio_file", blob, "test"); 
    // Display the key/value pairs 
    for(var pair of data.entries()) { 
     console.log(pair[0]+ ', '+ pair[1]); 
    } 
    $.ajax({ 
     type: "POST", 
     url: $("#post_url").val(), 
     data: data, 
     processData: false, // prevent jQuery from converting the data 
     contentType: false, // prevent jquery from changing something else as well 
     success: function(response) { 
     alert(response); 
     } 
    }); 
    }) 
}); 

,當我提出這個要求經過我看到這個控制檯...

csrfmiddlewaretoken, 3YBQrdOUkquRDD5dN0hTJcUXYVFiNpSe 
audio_file, [object File] 

,然後在我django CBV我把print request.POST.items()在第一行,所以我可以看到什麼進來。在我的終端,我看到這...

[(u'csrfmiddlewaretoken', u'mymiddlewaretokenvalue')] 

根本不存在audio_file密鑰。 Wy會顯示在JavaScript控制檯,然後消失在Django的請求?

我也看到未來的潛在問題,因爲我認爲JavaScript控制檯只是打印一個字符串[object File]這顯然不會做我想做的。

下一步該去哪裏的任何想法?

+2

你可以在'request.FILES'中的Django中看到它嗎? –

回答

1

正如丹尼爾羅斯曼寫道,上傳文件最終在request.FILES。還有一件事 - 從jQuery文檔:

從jQuery 1.6開始,您可以傳遞false來告訴jQuery不設置任何內容類型標題。

和Django文檔狀態:

注意request.FILES將只包含數據如果請求方法是POST併發布該請求的形式具有屬性ENCTYPE =「多部分/格式數據」。否則,request.FILES將爲空。