2014-12-30 88 views
3

我試圖將由getUserMedia生成的Blob URL上傳到服務器。 Someone else wanted to do the same thing,並且該問題已得到解答。XMLHttpRequest 404 Blob URL的狀態

對於XHR請求,我使用的是與回答該問題的人相同的代碼,但我得到了404.I made a fiddle,並且在查看控制檯時也會發生同樣的情況。我有一個live example on my site as well,同樣的事情發生。

下面是一段代碼,它需要一些TLC:

function XHR(){ 
var xhr = new XMLHttpRequest(); 
xhr.open('GET',record.src); //404 ??? 
xhr.responseType = 'blob'; 
xhr.onload = function(e) { 
    if (this.status == 200){ 
     //do some stuff 
     result.innerText = this.response; 
    } 
}; 
xhr.send(); 
} 

其他人都似乎是能夠做到這一點,因爲這已經討論過。

Exhibit A

Exhibit B

我使用的是Chrome操作系統,41.0.2252.2開發。到底發生了什麼,爲什麼我不能得到blob?

+0

您正在嘗試使用XMLHttpRequest加載Blob?爲什麼?什麼是blob? – epascarello

+0

那麼,我放在文章正文中的第一個鏈接顯示了一個想要將getUserMedia BLOB上傳到服務器的人。這也是我想要做的。 – RickyAYoder

+0

那麼你的代碼沒有上傳到服務器....你正在向該src發出請求...除非我讀錯了代碼。 PLUS您可能希望使用POST而不是由於文件大小而得到的。 – epascarello

回答

1

我幾乎可以肯定MediaStream中的媒體沒有保存在任何地方,只是在使用後丟棄。
在工作中有一個API來記錄流,MediaRecorder
只有Firefox有這個最基本的實現,所以它尚不可用。
如果您在移動設備上實現此功能,則可以使用具有捕獲屬性的文件輸入。

<input type="file" accept="video/*" capture> 
+0

但後來我不明白。我的帖子中的第一個鏈接呢?他們指的是什麼瀏覽器? – RickyAYoder

+0

另一件我想補充的是:它們似乎在使用後被扔掉,但這沒有任何意義。 BLOB網址應該是「內存中」。有點像虛假廣告 - 一個BLOB只是被丟棄而不是保存! – RickyAYoder

0
function XHR(){ 
var xhr = new XMLHttpRequest(); 
xhr.open("GET","record.src",true); // adding true will make it work asynchronously 
xhr.responseType = 'blob'; 
xhr.onload = function(e) { 
    if (this.status == 200){ 
     //do some stuff 
     result.innerText = this.response; 
    } 
}; 
xhr.send(); 
} 

現在就來試試!它應該工作。

+0

對不起,我花了這麼長時間纔回到這個問題。這仍然不起作用。我真的不明白爲什麼之前談論過它甚至不工作! – RickyAYoder

0

看看這個帖子: Html5 video recording and upload?

你所缺少的是什麼「斑點」是宣言。此人在.onload函數()中做的第一件事是 var blob = new Blob([this.response], {type: 'video/webm'});