首页 > 解决方案 > Vimeo API:使用可恢复方式上传视频文件

问题描述

我正在关注有关可恢复上传的 Vimeo api 指南 ( https://developer.vimeo.com/api/upload/videos#resumable-tus-upload )。我在第一个请求后收到了响应,但我收到undefined了第二个请求的响应(第 2 步。上传视频文件)。该指南告诉从upload.upload_link 将视频文件的二进制数据PATCH 到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)
      }
    });
  }
});

标签: file-uploadvimeo-apitus

解决方案


我现在一直在和它一起工作。我认为当时调用 Patch 时不确定您的文件二进制数据是否已转换,

所以要确保你必须把这个电话放到reader.onload. 所以它肯定是二进制数据。

readAsBinaryString已弃用。所以你可以使用readAsArrayBuffer. 为什么不推荐使用 readAsBinaryString()


推荐阅读