节点 fs 从给定 URL 或 GCS 读取文件
node fs read file from given URL or GCS
当 运行 下面的代码给出错误,从目录中读取文件工作完美但当通过 url 时它给出文件未找到错误。我已经检查 fs.statSync 接受 url。
const stat = fs.statSync('http://techslides.com/demos/sample-videos/small.mp4');
Error: ENOENT: no such file or directory, stat 'http://techslides.com/demos/sample-videos/small.mp4'
那是因为它托管在 web-server 上,您需要发送 HTTP GET 才能在本地获取它。
安装 axios
包并发出 HTTP GET 请求以从 web-server 获取远程资源。
npm install --save axios
下面是程序的大致思路
const fs = require('fs');
const axios = require('axios');
const { promisify } = require('util');
const writeFilePromise = promisify(fs.writeFile);
(async () => {
const url = 'http://techslides.com/demos/sample-videos/small.mp4';
const response = await axios.get(url);
if (response.data) {
await writeFilePromise('small.mp4', response.data);
}
})();
fs.statSync()
可以使用 URL,但前提是 URL 是 file://
URL.
不清楚如果参数实际上是一个 http://
URL 你会想做什么。您可以检查它是否不是文件 URL,然后尝试使用 got()
.[=15= 等库获取 URL 的内容以查看它是否存在]
但是,使用 http 从另一台服务器获取数据将不是同步的,因此您必须将函数的设计更改为 return 承诺而不是同步 API。
当 运行 下面的代码给出错误,从目录中读取文件工作完美但当通过 url 时它给出文件未找到错误。我已经检查 fs.statSync 接受 url。
const stat = fs.statSync('http://techslides.com/demos/sample-videos/small.mp4');
Error: ENOENT: no such file or directory, stat 'http://techslides.com/demos/sample-videos/small.mp4'
那是因为它托管在 web-server 上,您需要发送 HTTP GET 才能在本地获取它。
安装 axios
包并发出 HTTP GET 请求以从 web-server 获取远程资源。
npm install --save axios
下面是程序的大致思路
const fs = require('fs');
const axios = require('axios');
const { promisify } = require('util');
const writeFilePromise = promisify(fs.writeFile);
(async () => {
const url = 'http://techslides.com/demos/sample-videos/small.mp4';
const response = await axios.get(url);
if (response.data) {
await writeFilePromise('small.mp4', response.data);
}
})();
fs.statSync()
可以使用 URL,但前提是 URL 是 file://
URL.
不清楚如果参数实际上是一个 http://
URL 你会想做什么。您可以检查它是否不是文件 URL,然后尝试使用 got()
.[=15= 等库获取 URL 的内容以查看它是否存在]
但是,使用 http 从另一台服务器获取数据将不是同步的,因此您必须将函数的设计更改为 return 承诺而不是同步 API。