NodeJS Express枚举文件夹中的文件

时间:2017-06-07 17:23:28

标签: node.js express

抱歉,我是NodeJS Express的新手。我想从文件夹中获取所有文件。我尝试了以下但不起作用,测试总是空字符串:

var express = require('express');
var router = express.Router();
var fs = require('fs');

router.get('/', function(req, res, next) {
    var test = '';

    const testFolder = './public/images';

    fs.readdir(testFolder, (err, files) => {
      test = files[0];
    })

    res.render('index', { title: 'Express', file: test });
});

基本上,我想从公共图像文件夹中获取所有文件名。

1 个答案:

答案 0 :(得分:0)

此处的问题是res.render()将在test分配给files[0]之前执行,因为fs.readdir是异步进程。在调用回调之前,res.render已被执行。而且,如果您尝试从文件夹中获取所有文件,则应传递files数组。有关详细信息,请查看this。您可能想尝试以下代码。

var express = require('express');
var router = express.Router();
var fs = require('fs');

router.get('/', function(req, res, next) {
    var test = '';

    const testFolder = './public/images';

    fs.readdir(testFolder, (err, files) => {
       // test = files[0]; this will assign test to the first element of the array of file
       test = files;
       res.render('index', { title: 'Express', file: test });
    })


});