0
我试图使用SSH在客户端浏览器和远程服务器('云')之间发送文件。为此,我开发了一个Node.js网络服务器作为中间人。对于文件上传,我的节点网络服务器接收来自用户的请求并使用ssh2模块将其传送到远程服务器。以下是代码片段。文件上传的作品完美:从服务器到客户端的文件传输Node.js
var readStream = fs.createReadStream("filename.txt"); // on client's local computer
var writeStream = sftp.createWriteStream("/path/to/file/filename.txt"); // on the remote server
writeStream.on('close', function() {
console.log("- file transferred to cloud");
sftp.end();
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end("The file has been successfully uploaded to the cloud!");
});
readStream.pipe(writeStream);
所以我尝试用同样的想法来传输文件的另一种方法:从远程服务器到客户端,这里是我的代码:
var readStream = sftp.createReadStream("/path/to/file/filename.txt"); // on remote server
var writeStream = fs.createWriteStream("path/filename.txt"); // on the client's local computer server
writeStream.on('close', function() {
console.log("- file transferred to cloud");
sftp.end();
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end("The file has been successfully uploaded to the cloud!");
});
readStream.pipe(writeStream);
的问题是服务器上的文件确实被读取并且在客户端创建了一个文件 - 但它没有数据!我无法弄清楚为什么数据不会从服务器传输到客户端,但是如果我将文件从客户端传输到服务器,同样的方法也可以工作。
任何帮助将不胜感激!
我试过了,我得到'权限被拒绝'...虽然我很确定我已经读取了服务器上的文件。 – AliKhokhar