【发布时间】:2012-11-09 04:27:26
【问题描述】:
我正在尝试使用 curl 批量上传到 YouTube,遵循 API 规范 here;简而言之,它需要一个多部分的 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 拒绝处理视频。
如果我尝试使用 --data、--data-ascii、--form-string 等提交 upl.xml。我只会收到各种各样的其他错误,这让我相信这是由于内容类型不正确造成的。如果我忽略元数据并只发送视频文件,它可以正常工作,但不幸的是这并不能解决我的问题。
我是否在这里遗漏了什么,如果没有,是否可以在不破坏 libcurl 的情况下做到这一点?
【问题讨论】:
标签: curl youtube-api