使用他们的 API 和 curl (POST/PATCH) 将视频上传到 Vimeo
Upload a video to Vimeo using their API and curl (POST/PATCH)
据我了解,可以使用 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 命令应该是什么样的?
对于使用 Vimeo API 的 tus 上传,这是一个 multi-step 过程:
- 在 Vimeo 上创建视频 object
- 上传视频文件数据
- 确认 Vimeo 已收到您的视频文件
第 1 步是对 /me/videos
的 POST 请求。如果操作正确,您将收到完整的视频回复,其中 "upload"
object 包含 "upload_link"
。在步骤 2 中使用 upload_link
值。
(请注意,upload_link
应该在 Vimeo "tus" 子域上,例如 files.tus.vimeo.com
。如果你在不同的 Vimeo 子域上得到 upload_link
,那么您的请求出错,API 默认为另一种上传方法。您还可以通过检查 approach
值来验证您是否获得了 tus upload_link
returned嵌套在upload
object,应该return"tus".)
根据您的示例,--request
缺少 POST
verb/action。第 1 步应如下所示(另请注意 -request
、-header
和 -data
可与 -X
、-H
和 -d
互换,分别):
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"}}'
第 2 步,实际文件上传,是对第 1 步 upload_link
return 的 PATCH,请求 body 包含视频文件的原始二进制数据:
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
第 3 步是对同一个 upload_link
的 HEAD 请求,没有文件数据:
curl --request HEAD upload_link \
-H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
-H 'Tus-Resumable: 1.0.0' \
根据 upload-length
和 upload-offset
headers returned,您可能需要重复步骤 2,从 Vimeo 服务器上的最后一个字节恢复上传。
Vimeo 的 tus 上传实现文档可在此处找到:https://developer.vimeo.com/api/upload/videos#resumable-approach
希望这能为您指明正确的方向!
据我了解,可以使用 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 命令应该是什么样的?
对于使用 Vimeo API 的 tus 上传,这是一个 multi-step 过程:
- 在 Vimeo 上创建视频 object
- 上传视频文件数据
- 确认 Vimeo 已收到您的视频文件
第 1 步是对 /me/videos
的 POST 请求。如果操作正确,您将收到完整的视频回复,其中 "upload"
object 包含 "upload_link"
。在步骤 2 中使用 upload_link
值。
(请注意,upload_link
应该在 Vimeo "tus" 子域上,例如 files.tus.vimeo.com
。如果你在不同的 Vimeo 子域上得到 upload_link
,那么您的请求出错,API 默认为另一种上传方法。您还可以通过检查 approach
值来验证您是否获得了 tus upload_link
returned嵌套在upload
object,应该return"tus".)
根据您的示例,--request
缺少 POST
verb/action。第 1 步应如下所示(另请注意 -request
、-header
和 -data
可与 -X
、-H
和 -d
互换,分别):
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"}}'
第 2 步,实际文件上传,是对第 1 步 upload_link
return 的 PATCH,请求 body 包含视频文件的原始二进制数据:
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
第 3 步是对同一个 upload_link
的 HEAD 请求,没有文件数据:
curl --request HEAD upload_link \
-H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
-H 'Tus-Resumable: 1.0.0' \
根据 upload-length
和 upload-offset
headers returned,您可能需要重复步骤 2,从 Vimeo 服务器上的最后一个字节恢复上传。
Vimeo 的 tus 上传实现文档可在此处找到:https://developer.vimeo.com/api/upload/videos#resumable-approach
希望这能为您指明正确的方向!