У меня есть форма, в которой есть поле, которое может загружать несколько изображений в один тег <input>
. Когда я обращаюсь к файловой системе с помощью Node, она, похоже, асинхронно ставит очередь на обратный вызов для чтения/записи файлов. Поскольку у меня есть несколько файлов, у меня есть эти вызовы в цикле for
, поэтому значение i
всегда равно array.length
к моменту обратного вызова, в результате чего объект не будет определен.Несколько загрузок файлов в узле, принудительный синхронный обратный вызов?
for (var i = 0; i < req.files.photos.length; i++) {
req.fs.readFile(req.files.photos[i].path, function(err, data) {
if(err) throw err;
// i = req.files.photos.length here
// Test is undefined when the breakpoint on this line is hit for the first time
var test = req.files.photos[i];
// Both print "undefined"
console.log(test.name);
console.log(test.originalFileName);
var newPath = __dirname + "/../public/uploads/" + req.files.photos[i].name;
req.fs.writeFile(newPath, data, function (err) {
if (err) throw err;
console.log("it worked");
});
});
}
Спасибо, это разрешило проблему! Я использовал их раньше, когда у меня возникли проблемы с ajax, думаю, я должен держать это в виду в следующий раз :) – James