如何生成blob网址?

时间:2018-04-21 02:25:48

标签: angularjs blob

我有一个函数可以确定gif是动画的还是非动画的。一切正常,直到我将这些gif上传到服务器并加载它,blob url是一个空字符串。我如何为此生成blob网址?

由于blob url为空字符串,我得到的参数1不是' blob'

以下函数确定gif是否已设置动画。

$scope.isNotAnimatedGIF = function(file) {
  var reader = new FileReader();
  return new Promise(function(resolve, reject) {
    reader.onload = function (e) {
      var gifInfo = gify.getInfo(reader.result);
      if (gifInfo.images.length <= 1) {
        file.animatedGIF = false;
        resolve(true);
      } else {
        file.animatedGIF = true;
        resolve(false);
      }
    }
    reader.readAsArrayBuffer(file);
  });
}

我正在使用Angular 1.4.10 谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个reader.readAsDataURL(Blob|File)

您可以从here

中找到更多内容

答案 1 :(得分:0)

您可以使用URL.createObjectURL()创建Blob网址。

  

URL.createObjectURL()静态方法创建一个DOMString,其中包含表示参数中指定对象的URL。 URL生存期与创建它的窗口中的document相关联。新对象URL表示指定的File对象或Blob对象。

<强>样本

&#13;
&#13;
function createbloburl(file, type) {
  var blob = new Blob([file], {
    type: type || 'application/*'
  });

  file = window.URL.createObjectURL(blob);

  return file;
}
document.querySelector('#file').addEventListener('change', function(e) {
  var file = e.currentTarget.files[0];
  if (file) {
    file = createbloburl(file, file.type);
    document.querySelector('iframe').src = file;
    //console.log(file)
  }
})
&#13;
<input id="file" type="file">

<iframe src=""></iframe>
&#13;
&#13;
&#13;