DataURI到Blob错误:DOM异常5:指定了无效或非法字符

时间:2016-07-21 12:01:23

标签: javascript cordova meteor base64 blob

我使用带有Cordova插件的Meteor在iPhone上录制视频,然后将其转换为blob进行上传。大约一半的时间我尝试将视频从本地文件系统转换为blob,但是另一半则会出现此错误:

InvalidCharacterError: DOM Exception 5: An invalid or illegal character was specified, such as in an XML name.

似乎通常在视频超过3秒时发生,但它发生在真正的短视频上。这是我的dataURItoBlob函数:

function dataURItoBlob(dataURI) {
   var input = dataURI.replace(/\s/g, '');
   var binary = atob(input.split(',')[1]);
   var array = [];
   for(var i = 0; i < binary.length; i++) {
      array.push(binary.charCodeAt(i));
   }
   return new Blob([new Uint8Array(array)], {type: "video/mp4"});
}

我真的不确定我做错了什么,我尝试了其他几个类似的功能而没有运气。任何帮助是极大的赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

发现这是base64 dataURI的问题,而不是blob函数。出于某种原因,在尝试使用readAsDataUrl时它已损坏。根据{{​​3}},我按readAsBinaryData解决了该问题并手动附加data:video/mp4;base64,

this SO answer