Node.js进阶实践:Express+Multer 文件上传全攻略

4 下载量 147 浏览量 更新于2024-09-01 收藏 75KB PDF 举报
"基于Express和Multer的Node.js文件上传教程" 在Node.js环境中,Express框架是构建Web应用的常用选择,而Multer则是一个处理multipart/form-data(通常用于上传文件)的中间件。本教程将深入讲解如何使用Express和Multer实现文件上传功能,包括单图上传和多图上传,并探讨如何自定义保存的图片路径和名称。 1. 基础环境搭建 首先,你需要安装Express和Multer。通过npm(Node.js包管理器)运行以下命令: ``` npm install express multer --save ``` 这将在项目中安装这两个库,并将其添加到package.json的dependencies中。 2. 单图上传 创建一个名为`app.js`的服务器端文件,引入必要的模块并配置Multer。 Multer的`dest`参数设置为文件上传后的存储路径,例如`'upload/'`: ```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); ``` 前端HTML表单(`form.html`)需包含用于文件上传的`<input type="file">`元素,以及提交表单的按钮: ```html <form action="/upload" method="post" enctype="multipart/form-data"> <h2>单图上传</h2> <input type="file" name="logo"> <input type="submit" value="上传"> </form> ``` 用户选择文件后,表单将以multipart/form-data格式提交, Multer中间件会捕获到这个请求,并将文件保存在指定路径下。 3. 常用API 完成文件上传后,你可以通过`req.file`访问上传文件的相关信息,例如文件名、大小、类型等,以便进行进一步处理。 4. 进阶使用 - 自定义保存路径:在创建Multer实例时,可以通过`storage`选项来定义自定义的文件存储策略,比如保存到特定的目录或根据某种规则命名文件。 - 自定义文件名:可以通过实现`storage`选项的`filename`方法来自定义文件名。例如,使用当前日期和时间戳作为文件名: ```javascript var upload = multer({ storage: multer.diskStorage({ destination: function(req, file, cb) { cb(null, 'upload/'); }, filename: function(req, file, cb) { cb(null, Date.now() + '-' + file.originalname); } }) }); ``` 总结 本教程详细介绍了如何使用Express和Multer在Node.js中实现文件上传功能,包括基础的单图上传和更高级的自定义存储路径和文件名。这些知识对于任何需要处理文件上传的Web开发者来说都是非常有用的。通过理解和实践,你可以轻松地在自己的项目中集成这一功能。