我使用 vsftpd 在 Ubuntu 中设置了一个简单的 ftps 服务器,并且我能够毫无问题地从 filezilla 访问该服务器。但我希望能够从 node.js 脚本连接到它,以便我可以通过它读取/写入文件。我尝试了 2 个库,但仍然看不到任何结果。我使用过JSFTP和ftps库,但没有看到任何结果。
JSFTP
var JSFtp = require("jsftp");
var Ftp = new JSFtp({
host: "192.168.1.3",
port : 21,
user: "ftpuser", // defaults to "anonymous"
pass: "somepassword", // defaults to "@anonymous"
debugMode : true
});
Ftp.ls("./files", function(err, res) {
console.log('the result ' + res + err);//prints nothing
res.forEach(function(file) {
console.log(file.name);
});
});
Run Code Online (Sandbox Code Playgroud)
ftps(我在运行代码之前安装了 lftp 模块)
var FTPS = require('ftps');
var ftps = new FTPS({
host: '192.168.1.3', // required
username: 'ftpuser', // required
password: 'somepassword', // required
protocol: 'ftps', // optional, values : 'ftp', 'sftp', 'ftps',... default is 'ftp'
// protocol is added on beginning of host, ex : sftp://domain.com in this case
port: 21 // optional
// port is added to the end of the host, ex: sftp://domain.com:22 in this case
});
ftps.raw('ls -l').exec(function(err,res) {
console.log(err);//nothing
console.log(res);//nothing
});
ftps.cd('./files').ls().exec(function(err,res){
console.log(err);//nothing
console.log(res);//nothing
})
Run Code Online (Sandbox Code Playgroud)
如何配置 node.js 脚本以访问文件?
但是使用 curl ( http://www.binarytides.com/vsftpd-configure-ssl-ftps/ ) 我能够列出目录。但我唯一不明白的是为什么我们使用端口6003而不是21?
curl --ftp-ssl --insecure --ftp-port 192.168.1.3:6003 --user ftpuser:somepassword ftp://192.168.1.3
Run Code Online (Sandbox Code Playgroud)
更新——通过使用解决node-ftp
var Client = require('ftp');
var fs = require('fs');
var c = new Client();
c.on('ready', function() {
c.list("./files",function(err, list) {
if (err) throw err;
console.dir(list);
c.end();
});
});
// connect to localhost:21 as anonymous
//var c = new Client();
c.on('ready', function() {
c.get('./files/iris.data.txt', function(err, stream) {
if (err) throw err;
stream.once('close', function() { c.end(); });
stream.pipe(fs.createWriteStream('foo.local-copy.txt'));
});
});
c.connect(
{
host: "192.168.1.3",
port : 21,
user: "ftpuser", // defaults to "anonymous"
password: "somepassword", // defaults to "@anonymous"
secure : true,
pasvTimeout: 20000,
keepalive: 20000,
secureOptions: { rejectUnauthorized: false }
});
Run Code Online (Sandbox Code Playgroud)
我知道我们在secure这里使用了这个属性,但是我在之前的代码中做错了什么?
| 归档时间: |
|
| 查看次数: |
4499 次 |
| 最近记录: |