首页 > 解决方案 > 从目录中获取文件列表

问题描述

我有一个简单的应用程序,我在其中上传 .pdf 文件,然后使用 qpdf 对其进行加密。

快递中有我的“放置”路线。

app.put('/files', (req, res) => {
  const file = req.body;
  const base64data = file.content.replace(/^data:.*,/, '');
  //make temp dir
  fs.mkdtemp(path.join(os.tmpdir(), 'foo-'), (err, folder) => {
    if (err) throw err;
    console.log(folder);
    //write file to local and temp
    fs.writeFile(folder +'/' + file.name, base64data, 'base64', (err) => {
    if (err) {
      console.log(err);
      res.sendStatus(500);
    } else {
      res.set('Location', folder +'/' + file.name);
      res.status(200);
      console.log('test: ' + folder +'/' +file.name);

      res.send(file);

      // paths
      const src: any = (userFiles + file.name);
      const dst: any = (folder + '/' + file.name);

      //gen password and encrypt pdf
      genPass(dst, src);

      //List files from temp dir
      // const filesInDir = fs.readdirSync(folder, { withFileTypes: true })
      //   .filter(item => !item.isDirectory())
      //   .map(item => item.name)

      //   console.log('files from tmp dir: '+filesInDir)
    }
  });
  });
});

我在这里做几乎所有事情。第一代。temp dir 然后将文件写入本地和 temp,然后生成密码和 ecnrypt pdf。这一切都很好。

但现在我需要做出响应以列出所有文件。

我试图做这样的事情

app.get('/files', function (req,res) {
  const filesInDir = fs.readdirSync(folder, { withFileTypes: true })
    .filter(item => !item.isDirectory())
    .map(item => item.name)

  console.log('files from tmp dir: ' + filesInDir)
});

但出现错误:

找不到名称“文件夹”

当然因为“文件夹”在app.put里面

如何将此文件夹变量“导出”到app.get

文件夹获得了临时目录的路径。

标签: node.js

解决方案


为了在路线之间共享数据

app.post('/files', function(req, res){
  app.set('filePath', dst);
});
app.get('/files', function(req, res) {
  app.get('filePath');
});

供参考使用此链接


推荐阅读