今天,我对jsftp有问题。
当我运行脚本并且upload.txt
为空时,
jsftp正确地将一个空文件上传到服务器。
如果upload.txt
是utf-8 javascript文件,例如const x = "Hello World!";
,
jsftp正在上传名为.pureftpd-upload.5e35d750.15.79c5.1b3bbd87
的文件,该文件的字节数为0(=无数据)。
这是我的剧本:
var ftp = new jsftp({
host: "ftp.example.url",
port: 21,
user: user.name,
pass: user.pass
});
ftp.auth(user.name, user.pass, function(err){
if(err){
openDialog();
console.error(err);
throw err;
}
else{
ftp.put(path_datafile, '/directory/hello.js', function(err){
console.error(err);
throw err;
});
}
});
(输出中没有错误)
对于那些说您需要首先阅读文件的人:
var ftp = new jsftp({
host: "ftp.example.url",
port: 21,
user: user.name,
pass: user.pass
});
fs.readFile(path_datafile, 'utf8', function(err, buff){
if(err){
console.log(err);
}
else{
ftp.put(buff, '/directory/hello.js', function(err){
console.error(err);
throw err;
});
}
});
根本没有工作。 然后显示错误:
Local file doesn't exist
这里的错误是fs
模块现在正在转换文件
到utf-8 fs.readfile(file, 'utf8', action)
。
要解决该问题,只需写fs.readfile(file, action)
,
以便以字节为单位输出文件。
该脚本将输出false
,但可以正常工作。
所以Ragnar是对的。
当您不使用带有fs的utf8
编码时,他的答案是正确的。
不要使用它,它将起作用。