首页 文章

Vimeo API:使用可恢复的方法上传视频文件

提问于
浏览
1

我'm following the Vimeo api'关于可恢复上传的指南(https://developer.vimeo.com/api/upload/videos#resumable-tus-upload) . 我在第一次请求后收到响应,但我得到了第二个请求的 undefined 响应(步骤2.上传视频文件) . 指南告诉PATCH将视频文件的二进制数据发送到upload.upload_link中的URL . 我正在使用 readAsBinaryString() 将视频文件转换为二进制数据(我也尝试了 readAsArrayBuffer() 但结果相同 . 我可能做错了什么?这是代码:

var reader = new FileReader();

$.ajax({
  'url': 'https://api.vimeo.com/me/videos',
  'type': 'POST',
  'headers': {
    'Accept': 'application/vnd.vimeo.*+json;version=3.4',
    'Content-Type': 'application/json',
    'Authorization': 'bearer ' + accessToken
  },
  "data": JSON.stringify({ 
    "upload" : {
      "approach" : "tus",
      "size" : fileSize

    }
  }),
  'success': function (result) {
    $.ajax({
      'url': result.upload.upload_link,
      'type': 'PATCH',
      'headers': {
        'Tus-Resumable': '1.0.0',
        'Upload-Offset': 0,
        'Content-Type': 'application/offset+octet-stream'
      },
      'data': reader.readAsBinaryString(fileContent),
      'success': function (result) {
        console.log(result)
      }
    });
  }
});

1 回答

  • 0

    我能够在我的ReactJs应用程序中使用它 . 看起来你错过了reader.onload()方法 - https://developer.mozilla.org/en-US/docs/Web/API/FileReader/onload

    我将reader.readAsArrayBuffer的结果保存到state.binaryData . 然后我将binaryData作为数据传递给我的axios / fetch请求 . 它正在工作,我成功上传了视频 .

    const reader = new FileReader();
    const fileSize = e.target.files[0].size;
    reader.onload = r => {
      this.setState({ binaryData: r.target.result, fileSize });
    };
    reader.readAsArrayBuffer(e.target.files[0]);
    

相关问题