Я пытаюсь загрузить видео в vimeo с nodejs (https://developer.vimeo.com/apis/advanced/upload на шаге 3). Это то, что я в настоящее время сделать:Загрузка видео в Vimeo с nodejs
Во-первых, я вызываю функцию для чтения файла:
var options = {
hostname : dataObject.ticket.host,
path : '/upload?ticket_id=' + dataObject.ticket.id,
port : 8080,
method: 'POST'
}
postMovie(options);
я получаю эти параметры из моего объекта:
{
"generated_in": "0.0308",
"stat": "ok",
"ticket": {
"endpoint": "http://126535.cloud.vimeo.com:8080/upload?ticket_id=9d818e8bd066dfd54e53f1be2fa3f958",
"endpoint_secure": "https://126535.cloud.vimeo.com/upload?ticket_id=9d818e8bd066dfd54e53f1be2fa3f958",
"host": "126535.cloud.vimeo.com",
"id": "9d818e8bd066dfd54e53f1be2fa3f958",
"max_file_size": "26843545600"
}
}
Эта функция называется:
function postMovie(options){
// This is an async file read
fs.readFile('public/uploads/4363066343.mp4', function (err, data) {
if (err) {
console.log("FATAL An error occurred trying to read in the file: " + err);
process.exit(-2);
}
// Make sure there's data before we post it
if(data) {
PostData(data,options);
}
else {
console.log("No data to post");
process.exit(-1);
}
});
};
Когда файл прочитан:
function PostData(data,options) {
var headers = {
'Content-Type': 'video/mp4',
'Content-Length': data.length
}
options.headers = headers
console.log(options)
// Set up the request
var post_req = http.request(options, function(res) {
res.on('data', function (chunk) {
console.log('Response: ' + chunk);
});
});
// post the data
post_req.write(data);
post_req.end();
post_req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
}
Мой post_req.on (ошибка) регистрирует это:
problem with request: write EPIPE
problem with request: write EPIPE
Я понимаю, что это из-за тайм-аута на ServerSide.
Я предполагаю, что моя просьба не совсем сформирована.
Может кто-нибудь указать, что я сделал не так?
Я должен передать тип содержимого и содержимое длину. Как я могу установить их в opts, используя эту функцию pipe? (необходимо установить длину содержимого, равную data.length) – Ojtwist
Вы просмотрели запрос readme? Вы можете указать любые заголовки, которые вы хотите в объекте options (выбираете в примере выше) – Noah
Да, я знаю, хотя вы передаете файл в vimeo. Мне нужно установить длину содержимого в размере этого файла, и я не знаю, как это сделать при конвейерной обработке, так как у меня нет объекта данных, который содержит файл, который нужно отправить. – Ojtwist