我需要使用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) {
});
});
}
请帮帮我。 我的代码中有什么问题。 感谢。
答案 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) {
});
});
}