游乐游手机版
首页/编程语言/文章详情

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

时间:2026-04-26 11:33
在Linux系统中,Node js配置文件上传限制的实战指南 在Linux环境下部署Node js应用时,配置文件上传限制是保障服务稳定与安全的关键一步。这事儿主要围绕三个核心点展开: 限制单个文件的大小 限制整个请求体的大小 限制并发上传的文件数量 实现这些限制,通常需要借助中间件来完成。下面,我

在Linux系统中,Node.js配置文件上传限制的实战指南

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

在Linux环境下部署Node.js应用时,配置文件上传限制是保障服务稳定与安全的关键一步。这事儿主要围绕三个核心点展开:

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

实现这些限制,通常需要借助中间件来完成。下面,我们就以最常用的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对象。这里我们清晰地定义了三个维度的限制:fileSize管住单个文件的体积,files控制一次能传几个文件,而parts则限制了整个请求体的规模。旁边的fileFilter函数也没闲着,它像一道安检门,只放行图片类型的文件。

运行与测试

代码写好了,跑起来试试。首先,记得在项目根目录下创建一个名为uploads的文件夹,用于存放上传的文件。然后,在终端运行:

node app.js

看到“Server started on port 3000”的提示,说明服务已经启动。现在,你就可以通过向/upload路由发送POST请求来上传文件了,所有操作都会自动遵循你刚才设定的那些规则。

这样一来,你的应用就具备了基础的文件上传管控能力,既能满足业务需求,又能有效防止恶意或意外的超大请求冲击服务。在实际部署中,根据业务体量和服务器资源,灵活调整这些限制参数,才是更专业的做法。

来源:https://www.yisu.com/ask/84135856.html
上一篇Apache日志中的Host字段有什么意义 下一篇inotify如何处理大量文件监控
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
IDEA中SpringBoot项目热部署实现指南
编程语言 · 2026-07-11

IDEA中SpringBoot项目热部署实现指南

Springboot项目在IDEA中实现热部署需依次完成:开启自动编译(静态与动态编译)、启用热部署策略、引入spring-boot-devtools依赖、关闭浏览器缓存,最后启动测试即可生效,省去手动重启时间,大幅提升开发效率。

Java实现Excel转JSON的代码详解
编程语言 · 2026-07-11

Java实现Excel转JSON的代码详解

使用Java结合FreeSpire XLS库可自动将Excel转为JSON,通过读取工作表并映射为键值对,高效支持数据迁移、报表导出与系统对接,大幅提升效率并消除手动录入错误。

Golang高效布谷鸟过滤器多字符集字符串过滤
编程语言 · 2026-07-11

Golang高效布谷鸟过滤器多字符集字符串过滤

布谷鸟过滤器支持删除操作,通过指纹截断与双哈希定位实现多字符集高效过滤。指纹截断需采用fnv64a或xxhash快速哈希并取低8位,桶索引使用独立双哈希避免假阳性。并发安全需以固定数组配合sync atomic实现。

Java使用Poi-tl按Word模板生成动态表格
编程语言 · 2026-07-11

Java使用Poi-tl按Word模板生成动态表格

Poi-tl是Word导出工具,文档周全,支持多级合并表头生成。通过{{text}}、{{?var}}、{{ table}}标签处理模板,传入TableRenderData对象即可动态渲染表格。示例展示用户信息表格生成,并提供工具类消除表格首行缩进,确保格式正确。

Go语言微服务集成Swagger生成交互式API文档完整教程
编程语言 · 2026-07-11

Go语言微服务集成Swagger生成交互式API文档完整教程

在Go微服务中集成Swagger常见四大问题:swaginit初始化失败需确保存在packagemain及注释;SwaggerUI加载失败因路由映射错误或未导入docs;@Param注解必须严格遵循格式;部署后接口文档显示localhost因硬编码host,应删除或通过环境变量动态注入。