簡體   English   中英

將Base64視頻上傳到Parse.com-Javascript

[英]Upload Base64 Video to Parse.com - Javascript

我正在嘗試將我的base64視頻數據保存到Parse.com。 我對圖像使用了相同的技術,效果很好,但是由於某些原因,視頻將無法保存。 數周以來,我一直在嘗試調試此問題,但沒有成功。 我以這種方式工作圖像后基本上復制了技術/代碼...使用base64我認為它或多或少都可以相同...

我的視頻數據如下所示:

data:video/3gpp;base64,AAAAGGZ0eXAzZ3A0AAAAAGlzb2.....

正在保存的視頻只有〜56kb-〜1mb。 保存到文件限制為10mb的Parse.com。 我檢查了我的數據,一切似乎都正確,直到我嘗試將文件保存到Parse.com為止,這會返回錯誤400。

POST https://api.parse.com/1/files/myVideo.3gp 400 (Bad Request)

在我的XHR回復中:

{"code":107,"error":"base64 field cannot be decoded"}

任何人都對為什么它不起作用有任何見解:

var videoFile = new Parse.File('myVideo.3gp', {
    base64: _params.videoData
});

// save the parse file
videoFile
    .save({
        success: function(resp) {
            window.ERROR = "Success: " + resp;
        },
        error: function(e, r) {
            window.ERROR = "Error: " + e + " : " + r;
        }
    })
    .then(function() {

        _params.videoData = null;

        // create object to hold caption and file reference
        var videoObject = new ImageObject();

        // set object properties
        videoObject.set('title', _params.title);
        videoObject.set('user', Parse.User.current());
        videoObject.set('img', videoFile);

        if (_params.location !== undefined) {
            videoObject.set('location', new Parse.GeoPoint(_params.location.latitude, _params.location.longitude));
        }

        // save object to parse backend
        videoObject
            .save()
            .then(function(resp) {
                console.log('Posted Video', resp);
                // Add User QtdPhoto
                defer.resolve(resp);
            });

    }, function(error) {
        console.log('Error', error);
        defer.reject(error);
    });

HTTP狀態代碼400表示您的請求格式不正確 您可以復制粘貼從DevTools或Firebug發出的實際HTTP請求嗎?

另一方面,如果在完全相同的長度后請求被切斷。 這可能是由您這邊的防火牆/路由器引起的。 您在公司網絡的背后嗎?

更新:

作為對作者評論的回應。 有兩種方法可以將文件保存到Parse.com:

  1. 使用REST API
  2. 使用簡單的HTTP POST請求

第一種方法

我更喜歡使用HTML5文件字段為我處理文件。 它允許用戶選擇一個文件。

 var videoFile = document.getElementById("your-file"); if (videoFile.files.length > 0) { var parseFile = new Parse.File("myVideo.3gp", videoFile.files[0]); } parseFile.save().then(function() { // Success }, function(error) { // Error: alert() or log() console.log(error); }); 
 <input id="your-file" type="file" /> 

第二種方法:

像這樣發出POST請求或在此處閱讀文檔。

curl -X POST \
  -H "X-Parse-Application-Id: ${APPLICATION_ID}" \
  -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
  -H "Content-Type: video/3gp" \
  --data-binary '@your-local-file.3gp' \
  https://api.parse.com/1/files/videoFile.3gp

只需在您的AJAX請求中進行等效的卷曲即可。 是否可以在本機環境中進行編碼? 或者,您是在為PhoneGap,Ionic等編碼嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM