我正在使用"multer": "^1.0.6",
我希望将图像保存在上传文件夹中。
我的代码是
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
为什么我没有mimetype这个名字?
答案 0 :(得分:1)
Multer保存没有扩展名的文件,您可以在GitHub上阅读:
filename用于确定文件夹中应该命名的文件。如果没有给出文件名,则每个文件都会被赋予一个不包含任何文件扩展名的随机名称。
如果您想使用您在此处编写代码的扩展名进行保存:
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 :(得分: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));
});