从FTP上下载文件问题(Nodejs相关)
从FTP上下载文件问题(Nodejs相关)
c.on(‘ready’, function () {
console.log(‘ready’);
c.get(’/pub/seg/pac/chkrootkit.tar.gz’,function(err,stream){
if(err){
console.log(“error”);
}else{
stream.once(“close”,function(){
c.end();
});
var writable = fs.createWriteStream(‘chkrootkit.tar.gz’,‘a’);
stream.pipe(writable);
}
});
});
这段代码一开始运行成功了,但是我把对应文件删除后重新下载的话又会报错:
stream.js:94
throw er; // Unhandled stream error in pipe.
^
Error: EACCES, open 'chkrootkit.tar.gz'
新人求指导
3 回复
自己回帖。。。 已经解决,发现var writable = fs.createWriteStream(‘chkrootkit.tar.gz’,‘a’); 文件路径需为绝对路径,如/home/usr/chkrootkit.tar.gz
根据你的描述,错误信息 EACCES, open 'chkrootkit.tar.gz'
表示你尝试打开一个文件时遇到了权限问题。这通常是因为文件正在被其他程序使用或文件权限设置不正确。
为了解决这个问题,你可以尝试以下几个方法:
- 确保文件没有被其他程序占用:确认没有其他进程正在使用
chkrootkit.tar.gz
文件。 - 更改文件写入模式:你可以将文件写入模式从
'a'
改为'w'
或默认模式。'a'
模式表示追加到文件末尾,而'w'
表示覆盖已存在的文件或创建新文件。
以下是修改后的示例代码:
const fs = require('fs');
const c = require('ssh2-sftp-client'); // 假设你使用的是 ssh2-sftp-client 库
c.connect({
host: 'your_ftp_host',
port: 22,
username: 'your_username',
password: 'your_password'
}).then(() => {
return c.get('/pub/seg/pac/chkrootkit.tar.gz', 'chkrootkit.tar.gz');
}).then((data) => {
console.log('File downloaded successfully.');
}).catch((err) => {
console.error('Error:', err);
}).finally(() => {
c.end();
});
在这个示例中,我们使用了 ssh2-sftp-client
库来简化 FTP 下载操作。你可以通过 npm 安装该库:
npm install ssh2-sftp-client
这样可以避免手动处理流,并且会自动处理文件的创建和写入操作。