我正在尝试解决使用文件块通过api上传视频的问题。我有一个4704384字节的示例文件,我发送的块最大大小为1048576字节。所以将有4块1048576和1块510080.块似乎被发送到Vimeo很好,但是当我打电话给vimeo.videos.upload.verifyChunks时,我得到了这个回复:
<?xml version="1.0" encoding="UTF-8"?>
<rsp generated_in="3.8400" stat="ok">
<ticket id="cf2c9a26eea3aaffb9b4593efc1e0eda">
<chunks>
<chunk id="cf2c9a26eea3aaffb9b4593efc1e0eda" size="511436"/>
</chunks>
</ticket>
</rsp>
由于与实际文件数据一起发送的其他http标头,块大小是否与我预期的任何块都不匹配?此外,这里是否存在问题,因为响应的格式与Vimeo上传api页面上的示例响应不匹配?他们的例子:
<?xml version="1.0" encoding="utf-8"?>
<rsp stat="ok" generated_in="0.0028">
<ticket id="abcdef124567890">
<chunk id="0" size="678900" />
<chunk id="1" size="678900" />
<chunk id="2" size="4003" />
</ticket>
</rsp>
为什么我的所有块都合并为一个条目,而id与票证ID相同?
当我打电话给vimeo.videos.upload.complete时,我明白了:
<?xml version="1.0" encoding="UTF-8"?>
<rsp generated_in="2.3289" stat="fail">
<err code="708" expl="The file could not be saved. Try again." msg="File error"/>
</rsp>
我如何解决这个问题以弄清楚发生了什么?
更新:我认为我的问题是我试图通过PUT发送多个块,用于流式传输整个文件。要上传块,它需要是一个POST。但是当我尝试发布到Vimeo时,我收到此错误:“已建立的连接被主机中的软件中止”。我已经尝试禁用防病毒和Windows防火墙,建议修复此错误,但它没有帮助。
答案 0 :(得分:1)
事实证明我正在使用旧的vimeo.videos.upload.getTicket调用我一直用于流式传输使用PUT的upload_method = streaming的小视频。我将其更新为upload_method = post,我的多块POST工作正常。