Node.js 使用 Express 和 Multer 实现文件上传
本文介绍如何在 Node.js 环境中利用 Express 框架和 Multer 中间件实现文件上传功能。内容涵盖从初始化项目、安装必要依赖模块到编写服务端处理逻辑的完整步骤,并通过具体代码示例演示如何配置存储路径及处理上传请求。
Node.js 文件上传实现概述
本文分享了基于 Node.js 的文件上传实现代码,供读者参考。
作者近期开始研究 Node.js,如有不足之处或错误,欢迎指正。
首先需要安装 Node.js 环境,具体安装步骤略。
以下以图片上传为例进行说明。
项目初始化与依赖安装
第一步,在项目文件夹中生成 package.json 配置文件。
在 Windows 系统下,进入目标文件夹后按住 Shift 键并点击鼠标右键,选择“在此处打开命令窗口”,随后输入命令 npm init。
执行命令后按回车键一路确认(默认选项),即可在当前目录下生成 package.json 文件,其初始内容如下。

由于项目需使用 multer、express 和 fs 模块,其中 fs 为 Node.js 内置模块无需安装,而 multer 和 express 需通过 npm 安装。
安装 multer 模块,命令为:npm install multer --save。
安装 express 模块,命令为:npm install express --save。
安装完成后,文件夹中将出现 node_modules 目录,且 package.json 文件中会新增对应的依赖记录。

服务端代码编写与运行
第二步,创建 app.js 文件作为应用入口。
var express=require('express')
var app=express()
var multer=require('multer')
var fs=require('fs')
// var upload=multer({ dest: './tmp/' })
var createFolder = function(folder){
try{
fs.accessSync(folder);
}catch(e){
fs.mkdirSync(folder);
}
};
var uploadFolder = './upload/';
createFolder(uploadFolder);
// 通过 filename 属性定制
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, uploadFolder); // 保存的路径,备注:需要自己创建
},
filename: function (req, file, cb) {
// 将保存文件名设置为 字段名 + 时间戳,比如 logo-1478521468943
let suffix=file.mimetype.split('/')[1];//获取文件格式
cb(null, file.fieldname + '-' + Date.now()+'.'+suffix);
}
});
// 通过 storage 选项来对 上传行为 进行定制化
var upload = multer({ storage: storage })
app.post('/profile',upload.single('file'),function(req,res,next){
//req.body contains the text fields
console.log(req.file,'------',req.body,'-------',req.file.path);
// res.end(req.file.buffer);
// console.log(req.file.buffer.toString().length);
res.end('ok');
})
app.listen(8081);
在命令行中执行 node app.js 以启动服务。
按回车键运行该文件,服务即开始监听。
前端测试部分可参考相关的图片上传小程序示例进行联调。
以上就是 Node.js 实现文件上传的全部内容,希望这对大家的学习有所帮助。
Java和JavaScript应用场景对比:企业级后端 vs Web前端与Node.js
2026-11-04 16:42:01
JavaScript模块化开发入门:CommonJS与ES Module的区别
2026-11-03 23:31:34
怎么创建并运行第一个js文件
2026-11-03 21:49:02
JavaScript运行环境怎么搭建?Node.js官方下载与安装教程
2026-11-03 20:03:04
NestJS 集成 TypeORM 或 Prisma 实现数据库持久化操作
2026-11-03 18:56:13
