Javascript 从浏览器上传视频到youtube

Javascript 从浏览器上传视频到youtube,javascript,upload,youtube-api,youtube-javascript-api,Javascript,Upload,Youtube Api,Youtube Javascript Api,我没问题 我的页面上有两个按钮,如下所示: <input type="file" id="fileToSend"/> <input type="button" onclick="upload()" value="Upload" id="btnSend"/> 问题是,我在响应对象“mediaBodyRequired”上遇到一个错误,好像我没有正确发送文件流。有什么原因不能只使用YouTube上载小部件吗? 不管怎么说,直接从API参考资料 另一个资源: 使用v3插入有两

我没问题

我的页面上有两个按钮,如下所示:

<input type="file" id="fileToSend"/>
<input type="button" onclick="upload()" value="Upload" id="btnSend"/>

问题是,我在响应对象“mediaBodyRequired”上遇到一个错误,好像我没有正确发送文件流。

有什么原因不能只使用YouTube上载小部件吗?

不管怎么说,直接从API参考资料

另一个资源:

使用v3插入有两个选项。请求必须:

  • 将媒体文件作为阻止发送任何其他POST参数的主体,或
  • 分两部分使用多部分表单编码。一部分是要上载的文件,另一部分是类似JSON blob的文件,其中包含您想要发送的任何参数
  • 我从未使用官方JavaScript客户端实现过这一点,但我写了一篇非常详细的文章,解释了如何使用常规XmlHttpRequest实现这一点:

    下面是第一种方法的示例,其中文件本身就是整个请求主体:

    // where videoFile is a http://www.w3.org/TR/FileAPI/#dfn-file
    var invocation = new XMLHttpRequest();
    invocation.setRequestHeader('Authorization', 'Bearer ' + token);
    invocation.open('POST', "https://www.googleapis.com/upload/youtube/v3/videos?part=snippet", true);
    invocation.send(videoFile);
    

    你发现问题了吗?如果是这样,请共享您的完整代码,因为这正是我要做的。我得到错误:“uncaughtreferenceerror:gapi未定义。”为什么?我最终使用了v2api。如果我用v3找到解决方案,我会发布它。我会很高兴的。谢谢。gapi调用不应该在媒体的onload功能中完成吗?否则文件流不需要全部加载,youtube API也不喜欢。Kat,谢谢你的回复。我知道错误是因为请求不包含视频内容,但原因是API没有指定如何使用javascipt进行insert API调用。一个例子可以解决我所有的问题。好吧,这是一个获得播放列表的例子。。。看看它可能会帮助你。。。我正在寻找一个“插入”示例,但到目前为止,我在我的答案的第二个链接中只找到了一个java示例和一个使用oauthYes的python示例。我从这些示例中获得了代码灵感,但仍然没有运气。感谢您的帮助。关于您的问题,为什么不使用YouTube上载小部件。尽管在他们的介绍中说你可以上传一个文件,阅读修订历史,通过YouTube上传小部件上传文件到YouTube的选项显然被删除了Stephen,你的博客文章很棒,但它没有显示最终的http请求(“结果是成功上传,请求看起来非常像ruby gem生成的请求。”):(
    badRequest  mediaBodyRequired   The request does not include the video content.
    
    // where videoFile is a http://www.w3.org/TR/FileAPI/#dfn-file
    var invocation = new XMLHttpRequest();
    invocation.setRequestHeader('Authorization', 'Bearer ' + token);
    invocation.open('POST', "https://www.googleapis.com/upload/youtube/v3/videos?part=snippet", true);
    invocation.send(videoFile);