【问题标题】:DataURI to Blob errors: DOM Exception 5: An invalid or illegal character was specifiedBlob 错误的 DataURI:DOM 异常 5:指定了无效或非法字符
【发布时间】:2016-07-28 05:55:00
【问题描述】:

我正在使用带有 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"});
}

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

【问题讨论】:

  • 我已经尝试了 4 个其他 dataURI 到 Blob 函数,它们都给出了这个错误。让我觉得问题出在我的 dataURI 上,但我看不出有什么问题。它的开头有data:video/mp4;base64,

标签: javascript cordova meteor base64 blob


【解决方案1】:

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

Cordova - Reading Large Image corrupts image

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 2013-07-27
    • 2012-03-01
    • 2011-07-20
    • 2020-01-12
    • 2020-11-11
    • 2015-06-18
    • 1970-01-01
    相关资源
    最近更新 更多