将Base64视频上载到Parse.com-Javascript

将Base64视频上载到Parse.com-Javascript,javascript,angularjs,cordova,parse-platform,video-capture,Javascript,Angularjs,Cordova,Parse Platform,Video Capture,我正在尝试将base64视频数据保存到Parse.com。我对图像使用了同样的技术,效果很好,但由于某些原因,视频无法保存。我已经尝试调试这个问题好几个星期了,但没有成功。我基本上复制了技术/代码后,我有这样的图像工作方式。。。使用base64,我想它或多或少都是一样的工作 我的视频数据如下所示: data:video/3gpp;base64,AAAAGGZ0eXAzZ3A0AAAAAGlzb2..... 正在保存的视频只有~56kb-~1mb。保存到Parse.com,该文件限制为10mb。

我正在尝试将base64视频数据保存到Parse.com。我对图像使用了同样的技术,效果很好,但由于某些原因,视频无法保存。我已经尝试调试这个问题好几个星期了,但没有成功。我基本上复制了技术/代码后,我有这样的图像工作方式。。。使用base64,我想它或多或少都是一样的工作

我的视频数据如下所示:

data:video/3gpp;base64,AAAAGGZ0eXAzZ3A0AAAAAGlzb2.....
正在保存的视频只有~56kb-~1mb。保存到Parse.com,该文件限制为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:

  • 使用RESTAPI
  • 使用简单的HTTP POST请求
  • 第一种方法

    我更喜欢使用HTML5文件字段为我处理文件。它允许用户选择一个文件

    var videoFile=document.getElementById(“您的文件”);
    如果(videoFile.files.length>0){
    var parseFile=new Parse.File(“myVideo.3gp”,videoFile.files[0]);
    }
    parseFile.save().then(函数()){
    //成功
    },函数(错误){
    //错误:警报()或日志()
    console.log(错误);
    });
    
    “出于某种原因而不保存”表示您没有进行太多调试(如果有的话)。你应该。而且,是的,它可能与图片相同,只是视频要大得多,而base64编码会使它们更大。如果浏览器没有崩溃,您可能会达到服务器端限制。请将文档与您提供给文件构造函数的内容进行比较。你的数据属性似乎与文档不匹配。你也可以在这里添加你的
    \u参数的值吗?在我的chrome开发工具的响应部分,我发现了更多的错误:{“code”:107,“error”:“base64字段无法解码”}也许我在某个地方犯了错误。有没有更好的方法在parse上存储视频?我的应用程序是一个社交视频共享应用程序,解析似乎是一个正确的选择,到目前为止,一切都很简单和有效。视频不是很容易。我正在为PhoneGap编码。这就是我已经准备好的一切。我也不能仅仅使用输入HTML5元素,因为我正在使用ngCordova和用户的相机捕捉它。