繁体   English   中英

在 express js 中,如何从另一个 api 响应的文件中读取内容并将内容存储在变量中?

[英]in express js how to read content from a file that i get as a response from another api and store the content in a variable?

有一个 api 端点 - https://lichess.org/game/export/q7ZvsdUF

如果您在浏览器中打开此 api,它会下载一个扩展名为.pgn 的文件

我有一个快速 js 服务器。 我正在使用 node-fetch 库来访问这个端点。 我需要读取该文件的内容并将其作为字符串存储在变量中。 我如何阅读这个文件的内容?

这些是针对此 api 的响应的标头

server: nginx
date: Wed, 17 Aug 2022 09:03:04 GMT
content-type: application/x-chess-pgn
content-length: 5539
vary: Origin
content-disposition: attachment; filename=lichess_pgn_2017.12.28_Lance5500_vs_TryingHard87.q7ZvsdUF.pgn
access-control-allow-origin: *
access-control-allow-headers: Origin, Authorization, If-Modified-Since, Cache-Control
access-control-allow-methods: OPTIONS, GET, POST, DELETE
strict-transport-security: max-age=63072000; includeSubDomains; preload
expect-ct: max-age=31536000, enforce
x-frame-options: DENY
permissions-policy: interest-cohort=()

提前致谢。

更新---答案

const value = await new Promise((resolve, reject) => {
   const data = [];
   response.body.on("data", (c) => data.push(c));
   response.body.on("end", (_) => resolve(Buffer.concat(data).toString()));
   response.body.on("error", reject);
});

如果响应 header 是application/json那么你可以像这样await response.json()来获取数据。 如果不是,您可以执行上述方法将 stream 转换为字符串以在变量中使用它。

我希望您的磁盘上已经有该文件。 你试过这个:

var fs = require('fs');

fs.readFile('my-file.pgn', 'utf8', function(err, data) {
    if (err) throw err;
    console.log(data);
});

也许您必须调整编码标志才能获得正确的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM