繁体   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