Как прочитать файл по URL в узле JS
Я использую построчный модуль для узла js, и я хочу установить файл из URL, например, теперь у меня есть это:
LineByLineReader = require('line-by-line'),
lr = new LineByLineReader('file.txt');
И я хочу
LineByLineReader = require('line-by-line'),
lr = new LineByLineReader('http://test.pl/file.txt');
Является ли это возможным?
1 ответ
Решение
Вы можете архивировать это, используя потоки.
Библиотека, которую вы выбрали line-by-line
поддержать их, так что вы должны сделать только так:
- создать читаемый поток (сформировать файл в файловой системе или из ресурса онлайн через http)
- передать поток в вашу библиотеку и слушать события
Это работает, обратите внимание, что вам нужно требовать http
или же https
на основе вашего URL мой пример https
const http = require('https');
const LineByLineReader = require('line-by-line')
const options = {
host: 'stackru.com',
path: '/questions/54251676/how-to-read-file-by-url-in-node-js',
method: 'GET',
};
const req = http.request(options, (res) => {
res.setEncoding('utf8');
lr = new LineByLineReader(res);
lr.on('error', function (err) {
console.log('err', err);
});
lr.on('line', function (line) {
console.log('line', line);
});
lr.on('end', function () {
console.log('end');
});
});
req.on('error', (e) => {
console.log('problem with request', e);
req.abort();
});
req.end();