是否有 Node.js 函数来读取服务器上文件的内容?

Is there a Node.js function to read the contents of a file on a server?

我最初的问题被标记为一个完全不相关的问题的重复项,该问题与我的问题完全没有共同之处,所以我重新发布这个问题并做了一些澄清,希望能让我更清楚地知道我想做什么。


假设我在服务器上有一个文件 NOT 我的服务器:

https://example.com/names.txt

是否有功能可以让我将此文件作为 StringBuffer 来读取?

显而易见的解决方案是将文件下载到一个临时目录中,读取其内容,然后将其删除,但这非常慢并且需要多行代码。 有更简洁的方法吗?

您必须向该服务器请求该文件。 (例如 GET 请求)使用您选择的模块。

Making a request with the HTTP module

注意:在示例中,on('data', ...) 回调中的 d 将是您想要的。

假设文件位于 http 服务器上,您可以使用列出的 http 请求模块之一 here 来请求该文件。通常的默认行为是将来自 http 服务器的响应获取到内存中,但如果需要,您可以将其放入文件中。

内置的 http 库可以做到这一点,但它比我上面 link 中的高级库需要更多的代码行,这是它们的主要优点。

这是一个简单示例,使用我最喜欢的此类库 got 模块(具有内置承诺支持):

const got = require('got');
got("https://someserver.com/somefile.txt").text().then(result => {
    console.log(result);
}).catch(err => {
    console.log(err);
});

got 库有方法 .text().json().buffer() 用于获取响应主体、解析它(如果需要)并将结果放入右侧变量的类型。我上面的示例使用 .text() 因为您提到将响应放入字符串中。如果你想把它放在缓冲区中,你可以使用 .buffer() 代替。