在使用multer和Node.js确定文件的真实类型而不检查文件扩展名时,可以通过以下步骤实现:
npm install multer mime-types
const multer = require('multer');
const mime = require('mime-types');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/'); // 设置文件存储路径
},
filename: function (req, file, cb) {
const fileExtension = mime.extension(file.mimetype);
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
cb(null, file.fieldname + '-' + uniqueSuffix + '.' + fileExtension); // 设置文件名
}
});
const upload = multer({ storage: storage });
app.post('/upload', upload.single('file'), function (req, res, next) {
// 文件上传成功后的处理逻辑
});
其中,upload.single('file')
表示只接受名为file
的单个文件上传。
req.file
对象获取上传的文件信息,包括文件的原始名称、存储路径、大小等:app.post('/upload', upload.single('file'), function (req, res, next) {
const file = req.file;
console.log('Original Name: ' + file.originalname);
console.log('Stored Path: ' + file.path);
console.log('Size: ' + file.size);
// 其他处理逻辑
});
通过以上步骤,我们可以使用multer和Node.js确定文件的真实类型而不仅仅依赖于文件扩展名。multer会根据文件的MIME类型来确定文件的真实类型,并将文件存储在指定的路径下。这样可以提高文件上传的安全性,防止恶意用户伪造文件扩展名来绕过文件类型检查。
推荐的腾讯云相关产品:腾讯云对象存储(COS)
请注意,以上答案仅供参考,具体实现方式可能因项目需求和环境而异。
领取专属 10元无门槛券
手把手带您无忧上云