Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用node.js列出文件夹_Javascript_Node.js - Fatal编程技术网

Javascript 使用node.js列出文件夹

Javascript 使用node.js列出文件夹,javascript,node.js,Javascript,Node.js,我是node.js的初学者,我有一个问题。我想在带有视图ejs的列表中显示文件名和上次修改日期 但是,我的问题是将变量传递给我的视图,我想用文件名和日期填充arraylist,但没有显示任何内容 代码如下: app.get('/', function (req, res) { res.setHeader('Content-Type', 'text/html'); var filenameArray = []; var datefileArray = []; f

我是node.js的初学者,我有一个问题。我想在带有视图ejs的列表中显示文件名和上次修改日期

但是,我的问题是将变量传递给我的视图,我想用文件名和日期填充arraylist,但没有显示任何内容

代码如下:

  app.get('/', function (req, res) {
    res.setHeader('Content-Type', 'text/html');
    var filenameArray = [];
    var datefileArray = [];
    fs.readdir('./PDF/', function (err, files) {
        if (err) {
            throw err;
        }

        files.forEach(function (file) {
            fs.stat('./PDF/'+file, function (err, stats) {
                if (err) {
                    throw err;
                }

                // Fill in the array with filename and last date modification
                filenameArray.push(file);
                datefileArray.push(stats.mtime);
            });
        });
    });
    filenameArray.push("test");
    datefileArray.push("pouet");
    res.render('files.ejs', { filename: filenameArray, dateModification: datefileArray, index: filenameArray.length });
});
以下是我的观点:

<p> <%= filename.length %></p>
<ul><%
    for(var i = 0 ; i <= index; i++) {
    %>
    <li><%= filename[i] + " - " + dateModification[i] %></li>
<% } %></ul>


    记住:node.js是异步的,因此当调用
    render
    时,其中的
    fs.readdir
    fs.stat
    尚未返回

    您可以使用该模块来帮助您:

    var async = require('async');
    
    app.get('/', function (req, res) {
      res.setHeader('Content-Type', 'text/html');
      var filenameArray = [];
      var datefileArray = [];
      fs.readdir('./PDF/', function (err, files) {
          if (err) {
              throw err;
          }
    
          async.each(files, function (file, callback) {
              fs.stat('./PDF/'+file, function (err, stats) {
                  if (err) {
                      throw err;
                  }
    
                  // Fill in the array with filename and last date modification
                  filenameArray.push(file);
                  datefileArray.push(stats.mtime);
                  callback();
              });
          }, function (error) {
            if (error) return res.status(500).end();
            res.render('files.ejs', { filename: filenameArray, dateModification: datefileArray, index: filenameArray.length });
          });
      });
    });
    

    该函数将对数组中的每个项执行迭代器回调,最后,当所有迭代器函数完成(或发生错误)时,它将调用最后一个回调。

    好的,很好,我理解。非常感谢。