如何在没有直接 url 的情况下使用 puppeteer 下载 csv 文件到 firebase 云函数 tmp?
How to download a csv file to firebase cloud function tmp with puppeteer without a direct url?
所以我想下载一个带有 puppeteer 的 csv,它在 firebase 云函数上运行。
由于不想持久化,所以想存放在cloud functions的tmp文件夹中。
经过一番研究,我发现访问此文件夹路径的最佳方法是调用 os.tmpdir()
.
所以这是我当前的功能:
const downloadPath = `${os.tmpdir()}` + '/storageFolder';
await page._client.send('Page.setDownloadBehavior', {
behavior: 'allow',
downloadPath: downloadPath,
});
await page.waitForTimeout(500);
await page.$eval('mybutton', (mybutton) => mybutton.click());
await page.waitForTimeout(1000);
但是当我再次检查这个路径时,${os.tmpdir()}` + '/storageFolder'
中没有文件
至少当我这样做时:
fs.readdirSync(downloadPath).forEach(file => {
console.log("Filename", file);
});
没有任何内容打印到控制台。
我知道有很多关于此的问题,但每个接受的答案都是从 url 下载文件,但在我的情况下,无法获得 url.
那么为什么指定的文件夹中没有文件呢?我做错了什么?
你能把文件存储在云存储中吗,云函数是无状态的吗?另外,我可以看到您正在使用超时,这可能会导致计时问题。
我想知道您是否可以使用不需要使用 puppeteer
的解决方案:/
我让它工作了,至少在本地。
我把下载路径改成了
const downloadPath = `${os.tmpdir()}\downloads`;
看来我做的方式不对
所以我想下载一个带有 puppeteer 的 csv,它在 firebase 云函数上运行。
由于不想持久化,所以想存放在cloud functions的tmp文件夹中。
经过一番研究,我发现访问此文件夹路径的最佳方法是调用 os.tmpdir()
.
所以这是我当前的功能:
const downloadPath = `${os.tmpdir()}` + '/storageFolder';
await page._client.send('Page.setDownloadBehavior', {
behavior: 'allow',
downloadPath: downloadPath,
});
await page.waitForTimeout(500);
await page.$eval('mybutton', (mybutton) => mybutton.click());
await page.waitForTimeout(1000);
但是当我再次检查这个路径时,${os.tmpdir()}` + '/storageFolder'
至少当我这样做时:
fs.readdirSync(downloadPath).forEach(file => {
console.log("Filename", file);
});
没有任何内容打印到控制台。
我知道有很多关于此的问题,但每个接受的答案都是从 url 下载文件,但在我的情况下,无法获得 url.
那么为什么指定的文件夹中没有文件呢?我做错了什么?
你能把文件存储在云存储中吗,云函数是无状态的吗?另外,我可以看到您正在使用超时,这可能会导致计时问题。
我想知道您是否可以使用不需要使用 puppeteer
的解决方案:/
我让它工作了,至少在本地。
我把下载路径改成了
const downloadPath = `${os.tmpdir()}\downloads`;
看来我做的方式不对