我正在尝试使用 curl 批量上传到 YouTube,遵循此处的 API 规范;简而言之,它需要一个多部分的 POST 请求,其中包含 XML 格式的元数据和 Content-Type application/atom+xml; charset=UTF-8
,然后是视频数据本身。
我当前的命令行(从 upl.xml 获取元数据和从 upl.mkv 获取视频)看起来像这样:
curl -s -F "file=@upl.xml" -F "file=@upl.mkv" -H 'GData-Version: 2' -H 'Authorization: GoogleLogin auth=<AUTH>' -H 'Slug: upl.mkv' -H 'X-GData-Key: key=<KEY>' http://uploads.gdata.youtube.com/feeds/api/users/default/uploads
当我检查发送的实际请求时--trace
,看起来两个文件都以正确的顺序发送,但元数据的 Content-Type 设置为application/octet-stream
; 上传按预期完成,但 YouTube 拒绝处理视频。
如果我尝试使用 , 等提交 upl.xml --data
。--data-ascii
我--form-string
只会得到各种各样的其他错误,这让我相信它归结为不正确的 Content-Type。如果我忽略元数据而只发送视频文件,它可以正常工作,但不幸的是,这并不能解决我的问题。
我是否在这里遗漏了什么,如果没有,是否可以在不破坏 libcurl 的情况下做到这一点?