温馨提示×

Linux中Node.js如何配置文件上传限制

小樊
38
2025-11-30 16:05:46
栏目: 编程语言

在Linux系统中,使用Node.js配置文件上传限制通常涉及到以下几个方面:

  1. 限制单个文件的大小
  2. 限制整个请求体的大小
  3. 限制并发上传的文件数量

这些限制可以通过设置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路由,同时遵守配置的限制。

0