Node.js 使用 Express 和 Multer 实现文件上传

作者:服务小站

时间:2026-10-23

浏览:178

本文介绍如何在 Node.js 环境中利用 Express 框架和 Multer 中间件实现文件上传功能。内容涵盖从初始化项目、安装必要依赖模块到编写服务端处理逻辑的完整步骤,并通过具体代码示例演示如何配置存储路径及处理上传请求。

文章目录

Node.js 文件上传实现概述

本文分享了基于 Node.js 的文件上传实现代码,供读者参考。

作者近期开始研究 Node.js,如有不足之处或错误,欢迎指正。

首先需要安装 Node.js 环境,具体安装步骤略。

以下以图片上传为例进行说明。

项目初始化与依赖安装

第一步,在项目文件夹中生成 package.json 配置文件。

在 Windows 系统下,进入目标文件夹后按住 Shift 键并点击鼠标右键,选择“在此处打开命令窗口”,随后输入命令 npm init。

执行命令后按回车键一路确认(默认选项),即可在当前目录下生成 package.json 文件,其初始内容如下。

Node.js 文件上传实现概述

由于项目需使用 multer、express 和 fs 模块,其中 fs 为 Node.js 内置模块无需安装,而 multer 和 express 需通过 npm 安装。

安装 multer 模块,命令为:npm install multer --save。

安装 express 模块,命令为:npm install express --save。

安装完成后,文件夹中将出现 node_modules 目录,且 package.json 文件中会新增对应的依赖记录。

Node.js 文件上传实现概述

服务端代码编写与运行

第二步,创建 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 实现文件上传的全部内容,希望这对大家的学习有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章