如何在node.js中上传多个文件?

时间:2014-03-11 09:22:01

标签: node.js sails.js

我需要使用node.js上传文件阅读器上传多个文件的帮助。

我正在使用fs = require('fs')。 我在选择两个文件时遇到问题,只有一个文件只能在上传目录中写入。

这是我的后端

var files = req.files.files[0];
for (var i = 0; i < files.length; i++) {    
  file = files[i];
  fs.readFile(files[i].path, function(error, data) {
    // console.log( files[i].path ) ,here displayed two same both
    fs.writeFile(uploadDirectory() + newFileName, data, function(error) {
    });
  });
}

请帮帮我。 我的代码中有什么问题。 感谢。

1 个答案:

答案 0 :(得分:1)

你应该避免在异步函数的回调中使用files[i],它直接写在for循环中。 console.log( files[i].path )两次显示相同内容的原因是因为加载代码时,for循环已经完成了。所以你总是得到数组的最后一个元素。

解决这个问题的最简单方法是制作新的范围(功能)

for (var i = 0; i < files.length; i++) {    
  readAndWriteFile(files[i]);
}

var readAndWriteFile = function(file){
    fs.readFile(file.path, function(error, data) {
    // console.log( file.path ) displays what you expect.
    fs.writeFile(/* define new file name */, data, function(error) {
    });
  });
}