给我写一个可用得 nodejs 文件下载服务器
时间: 2024-11-15 15:19:48 浏览: 11
一个完整的nodejs项目
4星 · 用户满意度95%
要创建一个简单的Node.js文件下载服务器,你可以使用Express框架,它提供了一种快速的方式来构建web应用。下面是一个基本的示例,该服务器可以接收HTTP请求并返回指定文件:
```javascript
// 导入必要的模块
const express = require('express');
const fs = require('fs');
const http = require('http');
const path = require('path');
// 创建Express应用
const app = express();
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));
// 下载文件的路由处理函数
app.get('/download/:filename', async (req, res) => {
try {
// 获取请求中的文件名
const filename = req.params.filename;
// 指定文件路径,这里假设所有文件都在服务器根目录的`public`文件夹下
const filePath = path.join(__dirname, 'public', filename);
// 使用fs模块读取文件内容
const fileContent = await new Promise((resolve) => fs.readFile(filePath, 'binary', resolve));
// 设置响应头,指示这是一个二进制数据流
res.set({
'Content-Type': 'application/octet-stream',
'Content-Disposition': `attachment; filename=${filename}`
});
// 返回文件
res.send(fileContent);
} catch (err) {
console.error(`Error serving file: ${err.message}`);
res.status(404).send('File not found');
}
});
// 启动服务器
const port = process.env.PORT || 3000;
const server = http.createServer(app);
server.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
```
在这个例子中,你需要有一个名为`public`的文件夹,其中包含你想要用户下载的所有文件。当访问`/download/:filename`这样的URL时,服务器会查找对应的文件,并将其作为二进制数据流发送。
阅读全文