我试图将我的base64视频数据保存到Parse.com。我对图像使用了相同的技术并且工作正常,但视频由于某种原因无法保存。我已经试图将这个问题调试好几周而没有成功。在我以这种方式工作之后,我基本上复制了技术/代码...使用base64我认为它会或多或少地工作相同...
我的视频数据如下所示:
data:video/3gpp;base64,AAAAGGZ0eXAzZ3A0AAAAAGlzb2.....
保存的视频仅为~56kb - ~1mb。保存到Parse.com,文件限制为10mb。我检查了我的数据,一切似乎都正确,直到我尝试将文件保存到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);
});
答案 0 :(得分:0)
HTTP状态代码400表示您的request is not formed correctly。您可以复制粘贴从DevTools或Firebug生成的实际HTTP请求。
另一方面,如果请求在完全相同的长度后被切断。它可能是由您方程式的防火墙/路由器引起的。你是企业网络的幕后推手吗?
<强>更新强>
作为对作者评论的回应。有两种方法可以将文件保存到Parse.com:
第一种方法
我更喜欢使用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);
});
&#13;
<input id="your-file" type="file" />
&#13;
第二种方法:
发出类似的POST请求或阅读文档here。
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请求中执行相当于此curl的操作。在本机环境中编码是一种选择吗?或者,您是否正在为PhoneGap,Ionic等编码?