大家帮我看看这段代码,为什么返回的files.imgFile是undefined
发布于 10 年前 作者 perny 5705 次浏览 最后一次编辑是 8 年前

app.post(’/uploadImg’,function(req, res, next){ console.log(req.body.localUrl);//成功 console.log(req.files.imgFile.path);//成功

    var form = new formidable.IncomingForm();
    form.keepExtensions = true;//保留后缀 .jpg/.png

    
    var folderName = new Date().Format('yyyy-MM-dd');
    var dirPath = __dirname+"/../public/uploadimg/"+folderName+"/";

    console.log(dirPath);
    if(!fs.existsSync(dirPath)){//如果没有这个文件夹就创建文件夹
        fs.mkdirSync(dirPath);
    }

    form.uploadDir = dirPath;//设置文件上传的目录

    form.parse(req, function(err, fields, files){
        console.log(files.imgFile);//问题出现在这里,怎么返回的是undefined?
        var filePath = files.imgFile.path.replace(/\\/g, '/');
        var resPath = '/uploadimg/'+folderName+'/'+filePath.substring(filePath.lastIndexOf('/')+1);
        res.send({"error":0,"url":resPath});
    })
})
4 回复

files难道不是个数组?你不应该通过files[0]这种方式看吗?

不是,是一个对象!应该是图片没传上去的原因,怎样将文件传到指定文件夹啊?我倒是在临时文件夹看到了图片的身影!

@perny 你debug看下路径什么的是否正确,还有parse的api

files 对象就是你上传的文件集合,files里面到底是什么,console出来看看, 不一定叫imgFile, 叫什么取决于你post的时候设置的input框的name

回到顶部