egg从ftp服务器下载文件并传给前端
时间: 2024-03-13 20:47:16 浏览: 53
从FTP服务器下载文件
3星 · 编辑精心推荐
首先,需要使用Node.js中的FTP模块连接到FTP服务器,并下载文件。示例代码如下:
```javascript
const FTP = require('ftp');
const fs = require('fs');
const ftpClient = new FTP();
ftpClient.connect({
host: 'ftp.example.com',
user: 'username',
password: 'password'
});
ftpClient.on('ready', () => {
ftpClient.get('/path/to/file', (err, stream) => {
if (err) throw err;
const fileWriteStream = fs.createWriteStream('/path/to/local/file');
stream.pipe(fileWriteStream);
stream.on('end', () => {
console.log('File downloaded successfully.');
ftpClient.end();
});
});
});
```
这段代码会连接到FTP服务器,下载指定路径下的文件,并将其保存到本地文件系统中。
接下来,可以使用Egg.js创建一个HTTP接口,将下载的文件传给前端。示例代码如下:
```javascript
const Controller = require('egg').Controller;
const fs = require('fs');
class FileController extends Controller {
async download() {
const { ctx } = this;
const filePath = '/path/to/local/file';
const fileStream = fs.createReadStream(filePath);
ctx.set('Content-disposition', 'attachment; filename=example.txt');
ctx.body = fileStream;
}
}
```
这段代码会将下载的文件作为响应体传给前端,前端可以通过访问HTTP接口来获取文件。注意,`Content-disposition`头部指定了文件下载时的名称,可以根据实际需求进行修改。
阅读全文