推荐答案
// www.javascriptcn.com code example
const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
// 设置文件存储路径和文件名
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/'); // 文件存储路径
},
filename: function (req, file, cb) {
cb(null, Date.now() + path.extname(file.originalname)); // 文件名
}
});
// 初始化 multer
const upload = multer({ storage: storage });
// 处理文件上传的路由
app.post('/upload', upload.single('file'), (req, res) => {
if (!req.file) {
return res.status(400).send('No file uploaded.');
}
res.send('File uploaded successfully.');
});
app.listen(3000, () => {
console.log('Server started on http://localhost:3000');
});本题详细解读
1. 安装 multer
首先,你需要安装 multer 中间件。可以通过以下命令安装:
npm install multer
2. 配置 multer
multer 需要一个存储引擎来定义文件的存储位置和文件名。multer.diskStorage 方法允许你自定义存储路径和文件名。
destination: 指定文件存储的目录。filename: 指定文件的名称。通常使用时间戳和原始文件扩展名来生成唯一的文件名。
3. 初始化 multer
通过 multer 的配置对象初始化 multer 实例。这里我们使用了 storage 配置。
4. 处理文件上传
在 Express 路由中使用 upload.single('file') 来处理单个文件上传。file 是表单中文件输入字段的 name 属性。
req.file: 包含上传文件的信息。如果文件未上传,req.file将为undefined。res.send: 返回上传成功的消息。
5. 启动服务器
最后,启动 Express 服务器并监听端口 3000。
通过以上步骤,你可以使用 multer 中间件在 Express 应用中处理文件上传。