Vimeo API:使用 HTTP PUT 和 blueimp 的 jQuery 文件上传进行流式上传

2024-01-11

我正在尝试在网站上实现一个上传模块,该模块允许我们的用户将视频上传到我们的 Vimeo 帐户。我正在使用 blueimp 的 jQuery 文件上传和 Vimeo 的新 API。https://github.com/blueimp/jQuery-File-Upload/wiki/Options https://github.com/blueimp/jQuery-File-Upload/wiki/Options https://developer.vimeo.com/api/upload#http-put-uploading https://developer.vimeo.com/api/upload#http-put-uploading我认为它即将开始工作,但我一定错过了一些细节。 根据 Vimeo 的 API,我需要: 1.生成上传票,效果很好 2.然后我将 upload_link_secure 传递给 jquery 文件上传,开始上传。 PUT 请求的请求标头如下所示:

Request Method:PUT
Status Code:200 OK
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:43418955
Content-Type:multipart/form-data; boundary=----WebKitFormBoundarye8sGy57JH6ACoOfJ

这就是我调用 jQuery 文件上传的方式:

$('#file').fileupload({
url: upload_link_secure,
type: 'PUT'
});

我还尝试将 Content-Type 标头强制设置为“video/mp4”,但最终没有任何区别。

我还通过绑定 jquery fileupload 的提交事件检查了文件的大小,并且我还得到了比标头中发送的字节数更低的字节数,在本例中为 43418764,这样可以吗?

  1. 通过在 upload_link_secure 上发送 PUT 请求来验证上传,我得到了一些响应标头:

状态代码:308 简历不完整

范围:字节=0-3948544

状态代码:308 简历不完整

范围:字节=0-38682624

状态代码:308 简历不完整

范围:字节=0-43401216

  1. 确保所有字节均已发送至 Vimeo,然后通过在complete_uri 上发送 DELETE 请求来完成上传 验证上传时我得到最后一个标头:

范围:字节=0-43418955

它似乎与第一个请求中发送的内容长度匹配,因此我执行了 DELETE 请求,这是我得到的响应:

{"body":{"error":"您的视频文件无效。您上传的文件格式无效,或者上传不完整。请务必先验证您的上传,然后再将其标记为完成。"},"status ":400,"headers":{"日期":"2014 年 10 月 6 日星期一 17","服务器":"Apache","Vary":"接受、Vimeo-Client-Id、接受编码","缓存-Control":"无缓存,max-age=315360000","过期":"2024 年 10 月 3 日星期四 17","Content-Length":"184","X-Connection":"关闭","内容类型":"application/vnd.vimeo.error+json","通过":"1.1 dca1-10"}}

我一定犯了一个非常愚蠢的错误,但我不太熟悉所有这些 HTTP 请求和响应,有人知道我做错了什么吗?

Thanks !

[edit]非常感谢 Dashron,我实际上必须将 jQuery fileupload 的 multipart 选项设置为 false :

$('#file').fileupload({
        url: upload_link_secure,
        type: 'PUT',
        multipart: false
    });

之后,我收到此 HTTP 错误:

XMLHttpRequest cannot load https://1511632921.cloud.vimeo.com/upload?[...]. Request header field Content-Disposition is not allowed by Access-Control-Allow-Headers. 

There might be a clean fix for that but I didn't find it so I simply commented the lines that set the Content-Disposition header in jquery.fileupload.js

// if (!multipart || options.blob || !this._isInstanceOf('File', file)) {
//     options.headers['Content-Disposition'] = 'attachment; filename="' +
//         encodeURI(file.name) + '"';
// }

PUT 上传不支持多部分表单编码。 PUT 上传的请求正文应仅包含文件的原始字节。

POST 上传支持分段上传,但 POST 上传不支持可续传上传或范围标头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vimeo API:使用 HTTP PUT 和 blueimp 的 jQuery 文件上传进行流式上传 的相关文章

  • 生成适用于不同时区和数据的计划

    我正在构建一个网络应用程序 指导人们早起 它会为用户生成七十天内的起床时间表 他们输入当前的上升时间和目标上升时间 然后 上升时间每周减少一定量 直到达到目标时间 用户必须登录网站并在预定时间 签到 考虑到当前登录用户的时区和夏令时 我对如
  • 当 mysql_connect 不适用于 IIS 上的 PHP 时,不会返回任何错误消息

    我是 PHP 和 MySQL 的新手 最近在已经运行 IIS v6 的 Windows Server 2003 服务器上安装了 PHP v5 3 10 和 MySQL v 5 5 21 PHP 运行 我已经从 MySQL 5 5 命令行客户
  • 如何使用 ASP.Net 中的 PageMethods 将多维数组从 Javascript 传递到服务器

    我有一些 li 我的 HTML 页面中的项目如下 li li class ui state default Item 2 li li class ui state default Item 3 li li class ui state de
  • 推进并离开加入

    在教义中我可以 q Doctrine Query create gt from One o gt where t text aaa gt andWhere h text bbb gt leftJoin o Two t gt leftJoin
  • Opencart 2.2.0 启用按制造商搜索

    我正在使用 OC 2 2 0 并一直在努力解决以下问题 示例 我在标题搜索中输入西门子 然后单击 显示所有结果 我的搜索页面将显示所有结果 问题是 结果列表仅包含名称中包含西门子的产品 我需要的是展示all 搜索结果列表中属于该制造商的产品
  • stdClass 类的对象无法转换为字符串

    我现在在使用 PHP 时遇到问题 收到此错误 Object of class stdClass could not be converted to string当我在我的网站中运行这部分代码时发生错误 function myaccount
  • 将 PhotoSwipe 配置为不使用整个窗口?

    我目前正在尝试使用构建移动图片库照片滑动 http photoswipe com 我已经能够让它工作了 但有一个小问题 当我 单击照片缩略图 实际照片总是占据整个 视口 当您在移动设备上查看图库时 这是可以的 但是 如果您的视口是计算机屏幕
  • PHP 警告:模块“imagick”已在第 0 行未知加载

    我有一个简单的测试文件 其中唯一的 php 代码是 if isset REQUEST back back back REQUEST back filename images back jpg file file exists filenam
  • PHP 扩展 mysqli 和 nd_mysqli 之间的区别[重复]

    这个问题在这里已经有答案了 Mysqli 准备好的语句 如下所示 在以下情况下会抛出以下错误 get result 叫做 stmt connection gt prepare select column from table where i
  • php-webdriver:使用 click() 提交表单后等待浏览器响应

    除了使用sleep 在我的测试中 我想知道是否有人知道更好的策略 可以在继续我的断言之前显式等待表单提交 POST 完成 这是我的测试的一个非常浓缩的版本 结合使用 phpunitphp webdriver https github com
  • 强制上下文

    我有一个类 其中有一个私有属性和一个公共访问方法 Person function this Name asd var public new Object public Name function value if value undefin
  • 无法处理 ajax 中的 302 重定向,为什么? [复制]

    这个问题在这里已经有答案了 我有一个使用表单身份验证用 asp net mvc 编写的后端服务器 当用户未通过身份验证时 服务器将自动发送 302 重定向到登录操作并返回登录页面 在客户端 我有一个项目列表 只有经过身份验证的用户才能访问此
  • 使用“:not”和“.not()”选择器之间的性能差异?

    以下两条生产线之间是否存在速度 效率差异 table td not first child and table td not first child 我认为第一个会更好 因为它删除了对象 但是是否存在实际差异并且是否实质性差异 Thanks
  • 解析日期字符串

    我在 post 变量中有这个字符串 03 21 2011 我需要通过php解析它并将其转换成这种格式 2011 03 21 我正在使用 php 我需要这种格式 以便我可以运行此查询 SELECT prospect as Prospect c
  • 在同一台服务器上运行两个 PHP 版本

    我在本地服务器上有两个项目 一个项目运行PHP5 6 另一个项目运行PHP7 0 现在可以根据项目启用这两个版本吗 我已经尝试添加AddHandler application x httpd php7 php在 htaccess 项目之一中
  • 使用Ajax使用php将记录插入mysql数据库

    如何使用 Ajax 对此代码进行编码 请帮助 我是 Bignner 我已经编写了这段代码 它可以工作 但我想与 ajax 一起使用 因为不想重新加载页面 PHP文件 Code For Making Form And getting Data
  • 好的 PHP 开源分析/统计软件吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在构建的网址缩短服务需要向用户显示一些基本的点击统计信息 点击次数 转化次数 引用域和国家 地区
  • Node Express 和 csurf - 403(禁止)无效的 csrf 令牌

    浏览并尝试了我在这里和其他地方通过谷歌搜索能找到的所有东西 但我就是无法克服这一点 我正在使用 Node Express EJS 并尝试在使用 jQuery ajax 发布的表单上使用 csurf 无论我如何配置 csurf 我都会收到 4
  • 如何避免JQuery和Prototype之间的冲突

    如果一个页面同时具有 JQuery 和 Prototype 那么我就会遇到冲突 有一个选项可以禁用 JQuery 的 符号 因此不会发生冲突 但是我必须使用关键字 JQuery 而不是 我想知道Prototype是否有任何选项可以解决这个冲
  • 如何从 Backbone 集合中提取多个属性?

    我试图从 Backbone 集合中提取多个属性 但它返回undefined 收藏 id 1 name raju age 23 sex male hobbies id 2 name ramesh age 43 sex male hobbies

随机推荐