小编And*_*ley的帖子

使用 Nodejs (fs) 访问使用 input type=file 选择的文件

我在读取不同位置(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)

sftp file input fs node.js

4
推荐指数
1
解决办法
6614
查看次数

在Node.js中使用ssh2传输整个目录

我只是想知道是否可以使用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调用。这段代码仅供我测试,是否可以传输单个文件。 …

javascript sftp scp node.js

2
推荐指数
1
解决办法
4435
查看次数

标签 统计

node.js ×2

sftp ×2

file ×1

fs ×1

input ×1

javascript ×1

scp ×1