当我将图像上传到服务器 nodejs 时找不到文件(使用 multer)

Don't find file when i upload image to server nodejs (use multer)

当我通过 multer 上传图片时,我的服务器 nodejs 出现了一些问题。 https://github.com/expressjs/multer 当我转到文件夹上传时,我没有看到我的文件已上传!

我的代码:

app.use(multer(
    {
        dest: path.join(__dirname, 'uploads'),
        inMemory: true,
        includeEmptyFields: true,
        onFileUploadStart: function (file, req, res) {
            console.log('onFileUploadStart');
            console.log(file);
        },
        onFileUploadData: function (file, data, req, res) {
            console.log('onFileUploadData');
            console.log(file);
        },
        onFileUploadComplete: function (file, req, res) {
            console.log('onFileUploadComplete');
            console.log(file);
        },
        limits: {
            fieldNameSize: 999999999,
            fieldSize: 999999999
        },
        onParseStart: function() {
            console.log('Starting to parse request!');
        },
        onParseEnd: function(req, next) {
            console.log('Done parsing!');
            next();
        },
        onError: function(e, next) {
            if (e) {
                console.log(e.stack);
            }
            next();
        }
    }));

和路由:(我从客户端收到文件)

router.post('/newapi/addimages',function(req,res){
    try{
         // fileName = file.name, file name passed by client. Not used here. We use the name auto-generated by Node
        var file = req.files.file;
        var filePath = file.path;
        var lastIndex = filePath.lastIndexOf("/");
        var tmpFileName = filePath.substr(lastIndex + 1);
        var image = req.body;
        image.fileName = tmpFileName;
        return res.send({ok:'heyyou'});
    }
    catch(err){
        console.log(err);
        return res.send({ok:'heyyou'});
    }
});

我的结果:

这是因为您将 inMemory 选项设置为 true。此选项使图像保留在进程内存中,而不是通过管道将其传输到文件系统,并且可以通过 req.files.file.buffer.

访问

inMemory 更改为 false 就可以了。

不必 设置每个选项,对于您的应用程序,您可以使用大多数默认值。

app.use(multer({ dest: path.join(__dirname, 'uploads') }));