Node.js进阶实践:Express与Multer实现文件上传

3 下载量 53 浏览量 更新于2024-08-30 收藏 71KB PDF 举报
“Nodejs进阶:基于express+multer的文件上传实例” 在Node.js的Web开发中,图片上传是一项常见的需求。为了实现这一功能,开发者可以利用Node.js社区提供的成熟库,例如multer和formidable。multer是Express框架处理multipart/form-data类型的表单数据(通常用于文件上传)的理想选择。本教程主要关注使用Express和multer来完成图片上传,并涵盖从基本操作到更高级的定制方法。 首先,要搭建开发环境,只需要执行一条命令: ``` npm install express multer multer --save ``` 这会安装Express、multer以及multer依赖的库。 每个示例都包含两个核心文件:`app.js`(服务器端代码,负责处理文件上传请求)和`form.html`(前端页面,用于用户选择并提交文件)。 基础的单图上传实现如下: 在`app.js`中,设置Express应用并配置multer中间件,指定文件上传的目标目录(在这个例子中是`upload/`)。当收到'/upload'路由的POST请求时,multer会处理单个名为'logo'的文件上传,并将文件保存在指定目录下。GET请求'/form'则返回HTML表单供用户选择文件: ```javascript var fs = require('fs'); var express = require('express'); var multer = require('multer'); var app = express(); var upload = multer({ dest: 'upload/' }); // 单图上传 app.post('/upload', upload.single('logo'), function(req, res, next) { res.send({ ret_code: '0' }); }); app.get('/form', function(req, res, next) { var form = fs.readFileSync('./form.html', { encoding: 'utf8' }); res.send(form); }); app.listen(3000); ``` 对应的`form.html`页面是一个简单的HTML表单,包含一个文件输入字段和提交按钮,表单提交的地址是'/upload-single': ```html <form action="/upload-single" method="post" enctype="multipart/form-data"> <h2>单图上传</h2> <input type="file" name="logo"> <input type="submit" value="提交"> </form> ``` 启动服务器后(`node app.js`),用户可以通过访问`http://127.0.0.1:3000/form`来上传图片。 除了基础的单图上传,multer还支持多图上传和自定义保存路径及文件名。通过修改multer配置或在处理文件上传的回调函数中进行处理,可以实现更多高级功能。例如,可以动态生成文件名、根据上传文件的类型进行分类存储,甚至对上传的图片进行预处理(如缩放、裁剪等)。 通过学习和实践这些基础和进阶用法,开发者能够熟练掌握使用Express和multer进行文件上传的能力,从而在实际项目中灵活运用。