curl:multipartpost的每个文件内容类型(YouTube API)

curl:multipartpost的每个文件内容类型(YouTube API),curl,youtube-api,Curl,Youtube Api,我尝试使用curl批量上传到YouTube,遵循API规范;简而言之,它需要一个多部分POST请求,元数据为XML格式,内容类型为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 a

我尝试使用curl批量上传到YouTube,遵循API规范;简而言之,它需要一个多部分POST请求,元数据为XML格式,内容类型为
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
curl-s-F“file=@upl.xml”-F“file=@upl.mkv”-H'GData版本:2'-H'授权:GoogleLogin auth='-H'Slug:upl.mkv'-H'X-GData-Key:Key='shttp://uploads.gdata.youtube.com/feeds/api/users/default/uploads
当我检查使用
--trace
发送的实际请求时,看起来两个文件都是按照正确的顺序发送的,但是元数据的内容类型设置为
应用程序/octet流
;上传按预期完成,但YouTube拒绝处理视频

如果我试图用
--数据
--数据ascii
--表单字符串
等提交upl.xml,我只会收到一系列其他错误,这让我相信这是由于内容类型不正确造成的。如果我忽略了元数据,只发送视频文件,效果很好,但不幸的是,这并不能解决我的问题


我是否遗漏了一些内容,如果没有,是否可以在不中断libcurl的情况下执行此操作?

首先,您可以通过添加“type=magic/string”来指定上载部分的内容类型。例如,在您的视频案例中:

curl-F“file=@upl.mpeg4;type=video/mpeg4”[URL]

(使用--trace或--trace ascii验证curl发送的内容是否完全符合您的要求)

。。。不过,我猜接收服务器实际上不太可能关心客户机声称的内容类型。意思是我认为你问题的根源其实根本不是内容类型