Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js为什么获胜';无法找到路径和SFTP下载_Javascript_Node.js_Reactjs_Path_Ssh2 Sftp - Fatal编程技术网

Javascript Node.js为什么获胜';无法找到路径和SFTP下载

Javascript Node.js为什么获胜';无法找到路径和SFTP下载,javascript,node.js,reactjs,path,ssh2-sftp,Javascript,Node.js,Reactjs,Path,Ssh2 Sftp,下面是从SFTP服务器下载.csv文件的代码。它可以工作,并会自动将文件下载到我电脑上的下载文件夹 我有两个问题 首先,我希望React前端的用户得到提示下载文件,而不是下载到我的下载文件夹。现在它没有,它将在本地保存文件,仅此而已 第二,我想更改下载位置,从下载文件夹更改为项目根目录中的文件夹 我尝试在下面更改此部分: const localePath = path.join( process.env.HOME || process.env.USERPROFILE,

下面是从SFTP服务器下载.csv文件的代码。它可以工作,并会自动将文件下载到我电脑上的下载文件夹

我有两个问题

首先,我希望React前端的用户得到提示下载文件,而不是下载到我的下载文件夹。现在它没有,它将在本地保存文件,仅此而已

第二,我想更改下载位置,从下载文件夹更改为项目根目录中的文件夹

我尝试在下面更改此部分:

  const localePath = path.join(
      process.env.HOME || process.env.USERPROFILE,
      'Downloads/' + fileName,
致:

或:

但它们都不工作,并且返回“ssh2 sftp客户端”错误

完成下面的代码

const path = require('path');
const Router = express.Router();

Router.get('/getCSVFiles', async (req, res) => {
  try {
    let Client = require('ssh2-sftp-client');
    let sftp = new Client();

    const fileName = 'myfile.csv';

    const remotePath = '/Out/' + fileName;

    const localePath = path.join(
      process.env.HOME || process.env.USERPROFILE,
      'Downloads/' + fileName,
    );
    sftp
      .connect(
        {
          host: '10...',
          port: '....',
          username: 'username',
          password: 'pwd',
        },
        'once',
      )
      .then(() => {
        sftp
          .fastGet(remotePath, localePath, {})
          .then(() => {
            res.header('Content-type', 'text/csv; charset=windows-1251');
            res.sendStatus(200);
            sftp.end();
          })
          .catch((err) => {
            sftp.end();
            console.log(err, 'fastGet method error');
          });
      })
      .catch((err) => {
        sftp.end();
        console.log(err, 'connect method error');
      });
  } catch (error) {
    res.status(400).send('Error while getting list of files. Try again later.');
  }
});
   const localePath = 
      '../files/' + fileName,
const path = require('path');
const Router = express.Router();

Router.get('/getCSVFiles', async (req, res) => {
  try {
    let Client = require('ssh2-sftp-client');
    let sftp = new Client();

    const fileName = 'myfile.csv';

    const remotePath = '/Out/' + fileName;

    const localePath = path.join(
      process.env.HOME || process.env.USERPROFILE,
      'Downloads/' + fileName,
    );
    sftp
      .connect(
        {
          host: '10...',
          port: '....',
          username: 'username',
          password: 'pwd',
        },
        'once',
      )
      .then(() => {
        sftp
          .fastGet(remotePath, localePath, {})
          .then(() => {
            res.header('Content-type', 'text/csv; charset=windows-1251');
            res.sendStatus(200);
            sftp.end();
          })
          .catch((err) => {
            sftp.end();
            console.log(err, 'fastGet method error');
          });
      })
      .catch((err) => {
        sftp.end();
        console.log(err, 'connect method error');
      });
  } catch (error) {
    res.status(400).send('Error while getting list of files. Try again later.');
  }
});