Как скачать файл publi c с nodejs с yandex.disk / yadi.sk? - PullRequest
0 голосов
/ 05 января 2020

Мне не удалось сделать эту работу ... они мне помогают?

функция получает идентификатор файла в качестве параметра (пример: https://yadi.sk/d/idexample только получает: idexample)

module.exports.yadisk = (id, callback)=>{
const https = require('https');
const fs = require('fs');
let url = 'https://cloud-api.yandex.net/v1/disk/public/resources?public_key=https%3A%2F%2Fyadi.sk%2Fd%2F' + id;
var https_req_1 = https.request(url, (res)=>{
    res.setEncoding('utf8');
    var body = '';
    res.on('data', (chunk)=>{
        body = body + chunk;
    });
    res.on('end',()=>{
        var jBody = JSON.parse(body);
        var yd_file = fs.createWriteStream(jBody.name);
        var https_req_2 = https.get(jBody.file, (https_res_2)=>{
            https_res_2.pipe(yd_file);
            yd_file.on('error', (e)=>{
                callback(e);
            });
            yd_file.on('finish', ()=>{
                yd_file.close();
                callback('its ok');
            });
        });
        https_req_2.on('error', (e)=>{
            callback(e.message);
        });
    });
});
https_req_1.on('error', (e)=>{
    callback(e.message);
});
https_req_1.end();

};

забавно то, что ссылка, которая возвращает "jBody.file", работает правильно из браузера. С помощью этой функции генерируемый файл весит 0 байт, но не содержит ошибок, а обратный вызов возвращает «все в порядке»

большое спасибо за потраченное время =)

...