0

当我通过 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'});
    }
});

我的结果:

在此处输入图像描述

4

1 回答 1

4

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

更改inMemoryfalse,你会很高兴去的。

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

app.use(multer({ dest: path.join(__dirname, 'uploads') }));
于 2015-03-26T09:41:53.090 回答