nodejs 实现文件上传和下载
时间: 2024-09-23 17:10:56 浏览: 48
Node.js 环境下可以利用其事件驱动的特性以及一些第三方模块如`multer`(处理multipart/form-data类型的表单数据,常用于文件上传)和`fs`(File System模块,用于读写文件)来实现文件的上传和下载。
**文件上传(使用multer)**:
1. 首先安装multer: `npm install multer`.
2. 创建一个Express应用,并设置中间件处理POST请求,例如:
```javascript
const express = require('express');
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
const app = express();
app.post('/upload', upload.single('file'), (req, res) => {
if (!req.file) {
return res.status(400).send('No file uploaded.');
}
res.send(`File ${req.file.originalname} uploaded successfully.`);
});
```
这里`upload.single('file')`指定了接受单个名为`file`的文件。
**文件下载**:
使用`fs`模块,你可以创建一个路由来提供文件供下载:
```javascript
app.get('/download/:filename', (req, res) => {
const filePath = 'uploads/' + req.params.filename;
fs.readFile(filePath, (err, data) => {
if (err) {
res.status(500).send(err);
} else {
res.download(filePath, req.params.filename); // 设置Content-Disposition头,浏览器会自动下载
}
});
});
```
用户访问`/download/:filename`路径时,Node.js会尝试从`uploads/`目录中找到对应文件并返回给客户端。
阅读全文