2015-10-18 79 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)); 
});