2013-01-14 127 views
0

我的客戶希望顯示進度對話框,就像用戶在Youtube上上傳視頻一樣。通過XHR2上傳Youtube上的視頻

我寫的東西,如:

element = document.forms.uploadNewVideoForm.file; 

    var fd = new FormData(); 
    console.log(element.files); 
    fd.append('token', $scope.uploadData.token); 
    fd.append('file', element.files[0]); 

    var xhr = new XMLHttpRequest(); 
    xhr.upload.addEventListener("progress", $scope.uploadProgress, false); 
    xhr.addEventListener("load", $scope.uploadComplete, false); 
    xhr.addEventListener("error", $scope.uploadComplete, false); 
    xhr.addEventListener("abort", $scope.uploadComplete, false); 
    xhr.open("POST", $scope.uploadData.uploadUrl + '?nexturl=' + encodeURIComponent('http://local.app.com:8000/OK')); 

    xhr.onreadystatechange = function (response) {}; 
    xhr.send(fd); 

此代碼開始完美,但YouTube何時重定向到回調URL失敗。

POST http://uploads.gdata.youtube.com/action/FormDataUpload/<token here>?nexturl=http%3A%2F%2Flocal.app.com%3A8000%2FOK 

302 Moved Temporarily 
Location: http://local.app.com:8000/OK 

這裏請求中斷和錯誤回調被調用。

回答

0

看看下面的samplesource code)。它將上傳分成兩部分:

  1. CORS請求上傳元數據。
  2. 表單POST上傳實際視頻。

不幸的是,上傳頁面不支持CORS,所以這是最好的,你可以做。

+0

我想在視頻上傳時顯示進度條。如果我使用簡單的POST表單,我將無法做到這一點。 XHR請求失敗,導致Youtube重定向到回叫URL。我想可以使用[直接上傳API](https://developers.google.com/youtube/2.0/developers_guide_protocol_direct_uploading)進行上傳。它也支持CORS。 – Nikolay