Azure Functions linux nodejs存储和检索文件

bxpogfeg  于 2023-03-31  发布在  Linux
关注(0)|答案(1)|浏览(130)

我有一个nodejs示例在Azure Function应用程序中运行。使用Puppeteer,我可以浏览网站并下载文件。
我使用node os和tmpdir()创建了一个路径,如this answer和以下代码片段所示:

const downloadPath = path.join(os.tmpdir(), '/downloads/');

我使用context.log确认路径与预期一致:

context.log('Download path: ' + downloadPath);

返回Download path: /tmp/downloads/
我用下一个代码片段创建目录:

if (!fs.existsSync(downloadPath)) {
    fs.mkdirSync(downloadPath, { recursive: true });
}

然后我有一个函数,它监视该文件夹,并在文件添加到该文件夹时返回文件名:

async function watchFolderForFile(ctx) {
  return new Promise((resolve, reject) => {
     const watcher = fs.watch(downloadPath, async (eventType, fileName) => {
      ctx.log('watching folder');
      if (eventType === 'rename') {
        // A file has been added
        watcher.close();
        resolve(fileName);
      }
    });

    // Handle errors
    watcher.on('error', async (err) => {
      watcher.close();
      reject(err);
    });
 });
}

这一切都很好,我可以看到文件现在作为/tmp/downloads/DonationsReport-CharityId-2956110-from-2022-01-01-to-2022-01-31.Csv.crdownload的串联字符串存在
但是当我调用文件读取它时,我得到一个错误,该文件不存在。我应该做什么不同的事情,因为它是在Azure函数应用程序中?

xqk2d5yq

xqk2d5yq1#

经过几个小时的尝试和错误,我能够解决这个问题。由于Azure Function应用程序是在Linux环境中运行的,文件夹结构不同,os.tmpdir()将无法工作。我能够使用/home/目录存储和检索文件。
希望这对以后的人有帮助!

相关问题