【发布时间】:2015-09-05 02:22:20
【问题描述】:
我有表单对象从 angular js 返回到 node js,在控制台中看起来像这样,
对于两个文件,
filenames : [object Object],[object Object] # filenames object for two files
length: 2 # used object.length
对于一个文件,
filenames : [object Object] # filenames object for one file
length: undefined # used object.length
我是 Node js 的新手,谁能解释一下为什么会这样?
已编辑
ProfileController.js(客户端)
var fd = new FormData()
var filenames = $scope.postTextOrImageParams.imageUrl;
for( var i = 0; i < filenames.length; i++ ) {
fd.append("imageData",$scope.postTextOrImageParams.imageUrl[i]);
}
user.js(服务器端)
var filenames = req.files.imageData;
console.log(typeof filenames); //-> object
console.log('filenames : '+filenames);
console.log('length: '+filenames.length);
function uploader(i) {
if( i < filenames.length ) {
utils.saveMediaPic(filenames[i],function(error,savedImagePath){
if( error ) {
console.log('error: '+error)
}
else {
console.log("SAVED IMAGE ====>"+savedImagePath);
post.content.imageUrl.push(savedImagePath);
uploader(i+1)
}
});
}
【问题讨论】:
-
你能添加更多的代码吗?
-
能否添加您正在使用的对象或示例对象?
-
你确定在第二种情况下它实际上是一个数组。使用 Array.isArray() 方法查看developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
npmjs.com/package/qs#readme 在解析数组时可以看到,如果您在客户端使用 .append("imageData[]", ....) ,则 req.files.imageData 应该是一个数组。
-
@B3rn475,非常感谢,它解决了我的问题,请写在答案中,接受并对其他人有用:)