NODE使用egg框架从ftp服务器下载文件并返回给前端,请提供完整代码
时间: 2024-02-27 19:53:38 浏览: 96
好的,以下是使用egg框架从ftp服务器下载文件并返回给前端的完整代码:
```
// app/controller/ftp.js
const Controller = require('egg').Controller;
const fs = require('fs');
const ftp = require('basic-ftp');
class FtpController extends Controller {
async download() {
const { ctx } = this;
const { filename } = ctx.request.query;
// 连接ftp服务器
const client = new ftp.Client();
await client.access({
host: 'ftp.server.com',
user: 'username',
password: 'password',
});
// 下载文件
const fileStream = await client.downloadTo(fs.createWriteStream(filename), `/remote/path/${filename}`);
await fileStream.promise();
// 关闭ftp连接
client.close();
// 返回文件给前端
ctx.set('Content-Type', 'application/octet-stream');
ctx.attachment(filename);
ctx.body = fs.createReadStream(filename);
}
}
module.exports = FtpController;
```
需要注意的是,这里使用了basic-ftp库来连接ftp服务器和下载文件。同时,下载的文件会保存在服务器端的文件系统中,因此需要将其返回给前端时,需要设置响应头和响应体。
阅读全文