基于 Node.js 与 Multer 的图片上传实现
作者:接口漫谈时间:2026-10-22 04:36:59浏览:520
本文介绍如何使用 Node.js 的 Express 框架结合 Multer 模块实现图片上传功能。前端通过 jQuery Ajax 发送请求,后端配置 diskStorage 将文件保存至 public/uploads 目录,并返回文件路径以在页面显示。
Node.js 图片上传实现概述
前端使用 jQuery 的 Ajax 发起请求,后端利用 Node.js 中的 multer 模块完成图片上传操作。该示例旨在强调动手实践的重要性,应确保能够独立实现功能,而非直接复用他人代码。

注意
请在 public 目录下新建一个名为 uploads 的文件夹,用于存储上传的图片文件。
安装 multer 模块:
环境配置与模块安装
npm i -S multer
代码
1. app.js
后端服务代码解析
const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
//所有请求过来,都去项目当前的public目录下寻找所请求的文件,找到就返回
app.use(express.static('./public'));
//选择diskStorage存储
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, path.resolve('public/uploads'));
},
filename: function (req, file, cb) {
cb(null, Date.now() + path.extname(file.originalname));//增加了文件的扩展名
}
});
const upload = multer({storage: storage});
app.post('/profile', upload.single('avatar'), function(req, res, next) {
res.send({
err: null,
//filePath:就是图片在项目中的存放路径
filePath: 'uploads/' + path.basename(req.file.path)
});
});
app.listen(3000, function () {
console.log("app is listening 3000 port");
});
2. index.html
前端交互与页面展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
</head>
<body>
<form class="form-horizontal" enctype='multipart/form-data' method='post' action='javascript:;'>
<input type="file" id="choose"/>
<button onclick="handle()">上传</button>
<img class="newImg"/>
</form>
<script>
function handle() {
//获取上传的File对象,此处是一张图片对象
let file = document.getElementById("choose").files[0];
let formData = new FormData();
formData.append("avatar", file);//设置key为avartar,value为上述的File对象
$.ajax({
type: 'POST',
url: '/profile',
data: formData,
processData: false,
success: function (data) {
$(".newImg").attr("src", data.filePath);//上传成功则图片显示
},
error: function (err) {
console.log(err.message);
}
})
}
</script>
</body>
</html>
演示地址在此
以上内容为本文的全部介绍,希望能对读者的学习提供协助,同时也感谢大家的支持。
作者最新文章
全栈开发中JavaScript与Java怎么协作?前后端技术栈配合解析
2026-11-04 11:08:24
Node.js官网访问慢?国内镜像加速下载方案
2026-11-03 18:57:24
Node.js 连接 MySQL 数据库实现增删改查操作
2026-11-03 14:31:14
Windows系统安装Node.js:下载、配置与环境验证
2026-11-03 14:15:56
Linux (Ubuntu/CentOS) 环境下安装Node.js的常用方法
2026-11-03 10:18:39
