我需要使用 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) {
});
});
}
请帮助我。我的代码有什么问题。谢谢。
您应该避免在直接写入 for 循环内部的异步函数回调中使用 files[i]
。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) {
});
});
}
我是一名优秀的程序员,十分优秀!