希望有人能帮忙。。我使用jQuery dropzone.js上传视频,我可以很好地上传视频,但我不能"完成"这个过程,所以视频总是处于处理/上传状态。我正在根据Vimeo API文档执行正确的过程。这里有一些标题/响应,如果它们有帮助的话,我已经用xxxx:替换了一些值
上传请求头:
PUT /upload?ticket_id=xxxx&video_file_id=514311645&signature=acd2a6c4ba8c147651604793b081e053&v6=1 HTTP/1.1
Host: 1511923755.cloud.vimeo.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 FirePHP/0.7.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: video/mp4
Referer: http://local.xxxx.co.uk/vimeo
Content-Length: 29158540
Origin: http://local.xxxx.co.uk
x-insight: activate
Connection: keep-alive
上传响应标头:
HTTP/1.1 200 OK
Server: Vimeo/1.0
Content-Type: text/plain
Access-Control-Allow-Origin: *
Timing-Allow-Origin: *
Access-Control-Expose-Headers: Range
Access-Control-Allow-Headers: Content-Type, Content-Range, X-Requested-With
X-Requested-With: XMLHttpRequest
Access-Control-Allow-Methods: POST, PUT, GET, OPTIONS
Content-Length: 0
Connection: close
Date: Thu, 14 Apr 2016 08:05:19 GMT
X-Backend-Server: kopiluwak
上传响应:
<pre>Array
(
[body] =>
[status] => 308
[headers] => Array
(
[] =>
[HTTP/1.1 308 Resume Incomplete] =>
[Server] => Vimeo/1.0
[Content-Type] => text/plain
[Access-Control-Allow-Origin] => *
[Timing-Allow-Origin] => *
[Access-Control-Expose-Headers] => Range
[Access-Control-Allow-Headers] => Content-Type, Content-Range, X-Requested-With
[X-Requested-With] => XMLHttpRequest
[Access-Control-Allow-Methods] => POST, PUT, GET, OPTIONS
[Content-Length] => 0
[Connection] => close
[Range] => bytes=0-29158540
[Date] => Thu, 14 Apr 2016 08
[X-Backend-Server] => kopiluwak
)
)
</pre>
卷曲删除:
<pre>Array
(
[47] => 1
[10036] => DELETE
[10015] =>
[10023] => Array
(
[0] => Accept: application/vnd.vimeo.*+json; version=3.2
[1] => User-Agent: vimeo.php 1.0; (http://developer.vimeo.com/api/docs)
[2] => Authorization: Bearer xxxx
)
)
</pre>
DELETE的响应:
<pre>Array
(
[body] => Array
(
[error] => Invalid state
)
[status] => 500
[headers] => Array
(
[Server] => nginx
[Content-Type] => application/vnd.vimeo.error+json
[Cache-Control] => no-cache, max-age=315360000
[Strict-Transport-Security] => max-age=15120000; includeSubDomains; preload
[Expires] => Sun, 12 Apr 2026 08
[Accept-Ranges] => bytes
[Via] => 1.1 varnish
[Fastly-Debug-Digest] => 771e16bfeec90f734db73b1b0ee67af1dae1f86d0e6c56d4585eb9958a1684b7
[Content-Length] => 25
[Date] => Thu, 14 Apr 2016 08
[Connection] => keep-alive
[X-Served-By] => cache-iad2138-IAD, cache-lcy1126-LCY
[X-Cache] => MISS, MISS
[X-Cache-Hits] => 0, 0
[X-Timer] => S1460621123.195320,VS0,VE593
[Vary] => Accept,Vimeo-Client-Id,Accept-Encoding
)
)
</pre>
我刚刚在Vimeo论坛上回复了同一个问题,我读到了另一个SO线程-我也有同样的问题,只是把它发布在这里,因为这个特定线程似乎没有解决方案。
此外,关于你的帖子,你的帖子中没有提供太多信息。您的删除请求并不是所需的全部——假设您创建了一个有效的票证请求,并正确上传,然后尝试了您发布的del请求。
你的回应与我的类似——如果你的上传脚本在你的后端已经收到一张票后试图获得一张票,这个问题会像我的代码中那样弹出。
Vimeo帖子:https://vimeo.com/forums/api/topic:278394
我的解决方案:我解决了这个问题——我认为Vimeo最近纠正了他们API上的一些东西,因为我的代码没有bug,然后最近突然出现了一个bug。我敢打赌,他们在API网关上增加了速率限制,或者可能覆盖现有请求以清除旧请求。。。
无论如何,这是我的解决方案:
为了通过"可恢复的HTTP PUT上传"(developer.vimeo.com/api/upload/videos)完成视频上传,有5个步骤。
除了通过PHP后端上传外,我什么都做。我通过PHP请求票证,以免通过我修改后的JS前端(github.com/websematics/vimeo-upload)暴露一些秘密信息,但我没有通过JS代码正确编辑出票证请求,所以当前的错误可能是在第二个无效请求上触发的(即覆盖或限制我通过PHP的初始有效请求的速率)。一旦我正确绕过JS"上传"功能,直接跳到JS"sendFile_",上传就可以正常工作了。
希望这能帮助到外面的人!