使用 nodejs 的 ftp 模块进行文件传输
var Client = require('ftp');
//导入ftp 模块
var fs = require('fs');
var c = new Client();
var connectionProperties = {
host: "47.89.193.183”,
//不用加端口号,默认21
user: "test",
password: "test"
};
//链接信息
//把本地文件foo.txt上传到远程服务器foo.remote-copy.txt
c.on('ready', function() {
c.put('foo.txt', 'foo.remote-copy.txt', function(err) {
if (err) throw err;
console.dir("上传文件到服务器");
c.end();
});
});
c.connect(connectionProperties);
前端上传的文件传到指定 ftp 服务器
后端接收文件
const file = ctx.request.files.file;
//创建可读流
const reader = fs.createReadStream(file.path);
const ext = file.name.split(".").pop();
const dir = path.join(__dirname, `../upload/${utils.getDirName()}`);
utils.checkDirExist(dir);
let fileName = `${utils.getDirName()}_${~~(Math.random() * 10000)}.${ext}`;
const fileLocation = `${dir}/${fileName}`;
//创建可写流
const upStream = fs.createWriteStream(fileLocation);
//写入文件
reader.pipe(upStream);
utils.transferFile(fileLocation, `/yunjia/${fileName}`);
//传输文件到服务器
transferFile(fileLocation, path) {
let ftpClient = new FtpClient();
ftpClient.on("ready", function() {
ftpClient.put(fileLocation, path, function(err) {
if (err) throw err;
console.dir("成功上传文件到服务器");
ftpClient.end();
fs.unlinkSync(fileLocation);
});
});
ftpClient.connect(ftpConnectionConfig.ftpConnectionConfig);
}