我在读取不同位置(Node 项目目录除外)中的文件时遇到问题。我需要读取一个私钥文件(可以位于文件系统的任何位置)并通过 sftp 传输一些 yaml/yml 文件(也可以位于任何地方)。这些文件是在文件输入字段中选择的,该字段由我的 index.js(在 Node 中)中的 post 方法访问。问题是当我尝试读取文件时,我收到一个文件不存在的错误,特别是因为该目录默认为 Node 项目目录。
例如:
D:/path/to/Node/project
D:/this/is/where/the/keyis
它将尝试读取此文件:
D:/path/to/Node/project/keyis
我不知道为什么我只得到文件名。我知道接收整个路径存在安全风险,但我有点需要路径,即使它没有在任何阶段打印。
这是html表单的代码:
<form id="file-upload" name="uploadform" method="post" action="/upload" onsubmit="update()">
<input type='text' id='username' class="btn btn-lg btn-default" name='username' placeholder='Enter Username' style="color:#000"><br>
<h3>Select Key:</h3><input type='file' id='key-select' name='keySelect'><br>
<h3>Select Yaml:</h3><input type="file" id="file-select" name="yamlfiles[]" multiple accept=".yml, .yaml"/><br>
<button type="submit" class="btn btn-lg btn-default" id="upload">Upload Data</button>
</form>
Run Code Online (Sandbox Code Playgroud)
然后在 index.js 中:
router.post('/upload', function(req,res) {
// Create a new connection
var fs = require('fs');
var Connection = require('ssh2');
var c …Run Code Online (Sandbox Code Playgroud) 我只是想知道是否可以使用node.js中的ssh2模块将目录从Unix服务器传输到我的本地计算机。我已连接到远程主机,可以读取目录以及传输单个文件,但是目录中有28个文件夹,每个文件夹包含文件和子目录。我想做的是将主目录的精确副本从服务器复制到本地计算机。
我曾经在单个文件中使用fastGet,但是传输目录会给出:Error: EISDIR, open __dirname/../localdirectory/我认为这意味着我无法使用fastGet来获取整个目录。我也尝试使用exec命令尝试将其结束,但是我无法计算出本地目录的语法:
// c is an active connection
c.exec('scp filethatexists.extension /../filepath/newname.extension', function(err, stream) {
if (err) {
console.log("error: " + err);
stream.end;
};
stream.on('data', function(data, extended) {
console.log((extended === 'stderr' ? 'STDERR: ' : 'STDOUT: ') + data);
});
stream.on('end', function() {
console.log('Stream :: EOF');
});
stream.on('close', function() {
console.log('Stream :: close');
});
stream.on('exit', function(code, signal) {
console.log('Stream :: exit :: code: ' + code + ', signal: ' + signal);
c.end();
});
});
Run Code Online (Sandbox Code Playgroud)
这只会导致EOF调用。这段代码仅供我测试,是否可以传输单个文件。 …