我按照vimeo node.js api的文档上传文件。它非常简单,我通过直接在节点中运行它来工作,除了它要求我传递我想要上传的文件的完整路径。代码在这里:
function uploadFile() {
let file = '/Users/full/path/to/file/bulls.mp4';
let video_id; //the eventual end URI of the uploaded video
lib.streamingUpload(file, function(error, body, status_code, headers) {
if (error) {
throw error;
}
lib.request(headers.location, function (error, body, status_code, headers) {
console.log(body);
video_id = body.uri;
//after it's done uploading, and the result is returned, update info
updateVideoInfo(video_id);
});
}, function(upload_size, file_size) {
console.log("You have uploaded " +
Math.round((upload_size/file_size) * 100) + "% of the video");
});
}
现在我想要集成到我的react应用程序中生成的表单中,除了evt.target.files [0]的结果不是完整路径,结果如下:
File {name: "bulls.mp4", lastModified: 1492637558000, lastModifiedDate: Wed Apr 19 2017 14:32:38 GMT-0700 (PDT), webkitRelativePath: "", size: 1359013595…}
只是为了它,我将它传输到我已经工作的上传功能中,并且由于指定的原因它没有工作。我错过了什么吗?如果不是,我只想澄清我实际上必须做的事情。所以现在我正在查看官方的Vimeo指南,并希望确保这是正确的道路。请参阅:https://developer.vimeo.com/api/upload/videos
所以,如果我正确地阅读它,你会做几个请求来达到同样的目标吗?
1)向https://api.vimeo.com/me
进行GET以找出他们拥有的剩余上传数据。
2)对https://api.vimeo.com/me/videos
执行POST以获取上传票证。如果我想要一个可恢复的上传,例如vimeo streamingUpload()函数提供的那些,请使用type: streaming
3)对https://1234.cloud.vimeo.com/upload?ticket_id=abcdef124567890
4)对https://1234.cloud.vimeo.com/upload?ticket_id=abcdef124567890
进行PUT,但在没有文件数据和标题Content-Range: bytes */*
的情况下,我想检查上传的字节。
听起来不对?或者你可以简单地使用一个表格,我在某处弄错了。让我知道。感谢。
答案 0 :(得分:1)
这个项目中有一些示例代码可能值得一试:https://github.com/websemantics/vimeo-upload。
您的描述对于流媒体系统来说大多是正确的,但我想澄清最后两点。
3)在此步骤中,您应该使用Content-Length
标头向该网址发出PUT请求,该标头描述文件的完整大小(如下所述:https://developer.vimeo.com/api/upload/videos#upload-your-video)
4)在此步骤中,您检查上传字节的原因是您是否已完成上传,或者您的PUT请求中的连接是否已终止。我们可以保存尽可能多的字节,并且我们将在步骤4中响应我们收到的字节数。这可以让你从第一步开始,而不是从一开始就恢复。
为了稳定性,我们强烈建议使用可恢复的上传器,但如果您正在寻找简单性,我们会提供一个使用HTML表单的简单POST上传器。这方面的文档在这里:https://developer.vimeo.com/api/upload/videos#simple-upload