this.camera.getPicture({
quality: 50,
destinationType: this.camera.DestinationType.DATA_URL,
mediaType: this.camera.MediaType.VIDEO,
sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
}).then((videoData) => {
console.log('video data', videoData);
我无法将视频数据发送到服务器。
我在这里遇到的第一件事就是destinationType如何影响返回的结果,因为无论我设置什么(DATA_URL或File_Uri),它总是返回一些这个结构的网址/storage/emulated/0/DCIM/Camera/VID_20180312_210545.mp4
。 (仅供参考:我目前正在Android平台上测试这个)。我可以通过简单地将视频放入视频src来预览视频,但我无法将此视频发送到服务器。
这是我用来从返回的/storage
网址获取视频文件,然后将视频发送到服务器的方法。
return this.file.resolveLocalFilesystemUrl(data).then((entry:FileEntry)=>{
debugger;
return new Promise((resolve, reject)=>{
entry.file((file)=>{
let fileReader = new FileReader();
fileReader.onloadend = ()=>{
let blob = new Blob([fileReader.result], {type:file.type});
resolve({blob: blob, file: file});
};
fileReader.readAsArrayBuffer(file);
})
})
})
传递给resolveLocalFilesystemUrl的数据参数是我之前提到的那个url(/ storage / 0 ..)。
但这会引发错误,错误代码为5&错误消息ENCODING_ERR
我没有故意传递编码类型,因为这是图像文件。
重要提示:如果我添加' file://'对于数据,然后将其传递给resolveLocalFilesystemUrl()
,就像这样this.file.resolveLocalFilesystemUrl('file://'+data).then(())
,然后我就能创建我已发送到服务器的文件条目,服务器已成功保存视频。但我想使用更多的跨平台方法,这种方法可以在Android和Android上使用。的iOS
答案 0 :(得分:0)
使用Android,您需要更正您的网址。
从库中选择视频时,应使用resolveNativePath。
您可以在此处找到更多文档: