【问题标题】:How to get binary data for video file in javascript, Angular如何在javascript,Angular中获取视频文件的二进制数据
【发布时间】:2018-09-23 16:49:02
【问题描述】:

我正在使用 ionic 3 平台将视频文件上传到 vimeo api。我需要获取视频文件的二进制数据,并且我正在使用输入类型文件元素进行上传。

我写的代码如下

  videoUploadBody(videoObj) {
    const r = new FileReader();
    r.onload = function(){
        console.log("Binary data", r.result);
        return r.result;
    };
    r.readAsArrayBuffer(videoObj);
  }

这是我需要调用的函数,它应该以二进制形式返回我的视频文件。我调用上述函数的函数如下

 uploadVideo(videoFile, createdVideo) : Observable<any> {
    const bodyObj = this.compilerProvider.videoUploadBody(videoFile);
    return this.http.patch<Observable<any>>(createdVideo.upload.upload_link, bodyObj, this.uploadReqOpts);
  }

这里的 bodyObj 变量包含未定义,而我有 console.log 是 videoUploadBody 函数给我二进制形式的数据。

我认为存在一些异步或承诺问题。我需要更改哪些内容才能在 uploadVideo 函数中取回二进制数据?

【问题讨论】:

    标签: javascript angular http filereader


    【解决方案1】:

    你是对的,因为这是一个承诺问题。在你的第一个函数中,r.onload 只会在第一个函数返回后才返回,即使那样它也只会从嵌套函数返回。

    我不会为你编写正确的代码,但你要做的是将第一个函数的主体包装在一个在 r.onload 函数内解析的承诺中,然后第二个函数应该调用 .then on对它进行操作的承诺(提示:你需要在这里做出另一个承诺)。

    MDN 有很好的关于Promise 的信息。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

    【讨论】:

      猜你喜欢
      • 2013-07-15
      • 2023-04-03
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      • 2011-01-19
      • 2011-01-09
      • 2017-12-21
      • 1970-01-01
      相关资源
      最近更新 更多