2015-10-18 76 views
1

我使用"multer": "^1.0.6",而我想保存图像在上传文件夹。 我的代码是multer保存图像没有mimetype

app.post('/post', multer({dest: './uploads/'}).single('file'), function (req, res) { 
response = { 
    message: 'File uploaded successfully', 
    filename: req.file.filename 
}; 
res.end(JSON.stringify(response)); 
}); 

但我有这个名字的文件夹上传8e6e425f8756e0bafb40ed1a3cb86964

文件为什么我用这个名字没有MIME类型?

回答

1

Multer不保存扩展名的文件,你可以在GitHub上阅读:

文件名来确定哪些文件应该里面的文件夹命名。如果没有给出文件名,每个文件将被赋予一个不包含任何文件扩展名的随机名称。

如果你想保存你写代码喜欢这里的扩展:

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, '/tmp/my-uploads') 
    }, 
    filename: function (req, file, cb) { 
    cb(null, file.originalname); // modified here or user file.mimetype 
    } 
}) 

var upload = multer({ storage: storage }) 

的所有信息,你可以在这里找到https://github.com/expressjs/multer/blob/master/README.md

1

Multer并不担心文件的扩展名并留下它完全站在你的一边:你必须定义一个能够做到的功能。例如,像这样:

var multer = require('multer'); 
var upload = multer({ storage: multer.diskStorage({ 

    destination: function (req, file, cb) { 
     cb(null, './uploads'); 
    }, 

    filename: function (req, file, cb) { 
     var ext = require('path').extname(file.originalname); 
     ext = ext.length>1 ? ext : "." + require('mime').extension(file.mimetype); 
     require('crypto').pseudoRandomBytes(16, function (err, raw) { 
     cb(null, (err ? undefined : raw.toString('hex')) + ext); 
     }); 
    } 

})}); 

app.post('/post', upload.single('file'), function (req, res) { 
    response = { 
    message: 'File uploaded successfully', 
    filename: req.file.filename 
    }; 
    res.end(JSON.stringify(response)); 
});