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

DataURI to Blob errors: DOM Exception 5: An invalid or illegal character was specified

本文关键字:无效 非法 字符 错误 DataURI DOM 异常 Blob      更新时间:2023-09-26

我使用Meteor和Cordova插件在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"});
}

我真的不确定我做错了什么,我也尝试过其他一些类似的功能,但没有成功。非常感谢您的帮助。谢谢

发现这是base64 dataURI的问题,而不是blob函数的问题。由于某种原因,它在尝试使用readAsDataUrl时被损坏。根据这个SO答案,我通过readAsBinaryData和手动附加data:video/mp4;base64,来解决它。

Cordova-读取大图像会损坏图像