【问题标题】:Don't find file when i upload image to server nodejs (use multer)当我将图像上传到服务器 nodejs 时找不到文件(使用 multer)
【发布时间】:2015-03-26 17:47:21
【问题描述】:

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

我的结果:

【问题讨论】:

    标签: javascript node.js multer


    【解决方案1】:

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

    inMemory 更改为 false 即可。

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

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

    【讨论】:

      猜你喜欢
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多