在Linux系统中,使用Node.js配置文件上传限制通常涉及到以下几个方面:
这些限制可以通过设置Node.js应用程序中的中间件来实现。以下是一个使用Express框架和multer库的示例,展示了如何配置文件上传限制:
首先,确保已经安装了Express和multer库。如果没有,请使用以下命令安装:
npm install express multer
然后,创建一个名为app.js的文件,并添加以下代码:
const express = require('express');
const multer = require('multer');
const app = express();
// 配置multer
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads/');
},
filename: (req, file, cb) => {
cb(null, file.fieldname + '-' + Date.now() + '-' + file.originalname);
}
});
const upload = multer({
storage: storage,
limits: {
fileSize: 10 * 1024 * 1024, // 限制单个文件大小为10MB
files: 5, // 限制并发上传的文件数量为5
parts: 5 // 限制整个请求体的大小为5个部分(即5个文件)
},
fileFilter: (req, file, cb) => {
checkFileType(file, cb);
}
});
// 检查文件类型
function checkFileType(file, cb) {
// 允许的文件扩展名
const filetypes = /jpeg|jpg|png|gif/;
// 检查文件扩展名
const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
// 检查MIME类型
const mimetype = filetypes.test(file.mimetype);
if (mimetype && extname) {
return cb(null, true);
} else {
cb('Error: Images Only!');
}
}
// 上传路由
app.post('/upload', upload.array('myFiles'), (req, res) => {
if (req.files == undefined) {
return res.status(400).send('No files were uploaded.');
}
res.send(req.files);
});
// 启动服务器
app.listen(3000, () => {
console.log('Server started on port 3000');
});
在这个示例中,我们使用multer库配置了文件上传限制。limits对象定义了单个文件大小、并发上传的文件数量和整个请求体的大小。fileFilter函数用于检查上传文件的类型。
要运行此示例,请确保在项目目录中创建一个名为uploads的文件夹,并运行以下命令启动服务器:
node app.js
现在,您可以使用POST请求将文件发送到/upload路由,同时遵守配置的限制。