使用其API和curl(POST / PATCH)将视频上传到Vimeo

时间:2019-08-01 01:51:09

标签: curl vimeo vimeo-api

据我所知,可以使用curl发出POST和PATCH请求;

POST:https://gist.github.com/subfuzion/08c5d85437d5d4f00e58

匹配:How to use PATCH verb with curl

Vimeo API支持POST和PATCH请求以上传视频;

https://developer.vimeo.com/api/upload/videos

到目前为止,这是我最好的猜测;

curl --request --url https://api.vimeo.com/me/videos \
--header 'Authorization: bearer {access_token}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/vnd.vimeo.*+json;version=3.4' \
--data '{ "upload": { "approach": "tus", "size": "{size}" }}'

我怀疑这充满了错误,并且也没有显示如何上传带有PATCH请求的视频。

正确的curl命令是什么样的?

1 个答案:

答案 0 :(得分:2)

对于使用Vimeo API上传tus,这是一个多步骤过程:

  1. 在Vimeo上创建视频对象
  2. 上传视频文件数据
  3. 验证Vimeo已收到您的视频文件

步骤1是对/me/videos的POST请求。如果操作正确,您将收到完整的视频回复,其中包含一个"upload"的{​​{1}}对象。将"upload_link"的值用于步骤2。

(请注意,upload_link应该位于Vimeo的“ tus”子域上,例如upload_link。如果您在不同的Vimeo子域上获得了files.tus.vimeo.com,则您的出问题了请求,并且该API默认使用其他上传方法。您还可以通过检查嵌套在upload_link对象中的upload_link值来验证是否返回了图斯approach,它应该返回“ tus”。)

在您的示例中,upload缺少--request动词/动作。步骤1应该看起来像这样(还要注意,POST-request-header-data-X-H可以互换,分别):

-d

第2步是实际的文件上传,是对从第1步返回的curl -X POST https://api.vimeo.com/me/videos \ -H 'Accept: application/vnd.vimeo.*+json;version=3.4' \ -H 'Authorization: bearer XXXXXXXXX' \ -H 'Content-Type: application/json' \ -d '{"upload":{"approach":"tus","size":"999999"}}' 的PATCH,请求主体包含视频文件的原始二进制数据:

upload_link

第3步是对同一curl --request PATCH upload_link \ -H 'Accept: application/vnd.vimeo.*+json;version=3.4' \ -H 'Content-Type: application/offset+octet-stream' \ -H 'Tus-Resumable: 1.0.0' \ -H 'Upload-Offset: 0' \ --data-binary /path/to/file.ext 的HEAD请求,没有文件数据:

upload_link

根据返回的curl --request HEAD upload_link \ -H 'Accept: application/vnd.vimeo.*+json;version=3.4' \ -H 'Tus-Resumable: 1.0.0' \ upload-length标头,您可能需要重复步骤2,从Vimeo服务器上的最后一个字节恢复上传。

有关Vimeo的tus上传实现的文档,请参见:https://developer.vimeo.com/api/upload/videos#resumable-approach

希望这会为您指明正确的方向!