Coder Social home page Coder Social logo

Comments (1)

iserioton avatar iserioton commented on August 18, 2024

Having the same issue.
I have a cron job that runs after every five minutes. I am using a non-persistence connection so on every hit there will be a new connection.

`class FTP {
constructor() {
this.ftpLiveClient = new ftp();
this.connection_closed = false;
}

create_session() {
return new Promise(async (resolve) => {
try {
this.ftpLiveClient.connect(creds);

    await Promise.allSettled([
      new Promise((res) => {
        this.ftpLiveClient.on("ready", () => {
          res();
        });
      }),
    ]);

    this.uuid = uuidv4();
    save_session(this.uuid); // Save session open date time in log file

    this.watch_error();
    resolve(true);
  } catch (error) {
    close_connection();
    resolve(false);
  }
});

}

watch_error() {
this.ftpLiveClient.on(
"error",
function (err) {
this.close_connection();
}.bind(this)
);
}

close_connection() {
this.connection_closed = true;
this.ftpLiveClient.end();
close_session(this.uuid); // Update session close date time in log file
}
}

// Get file names from server.
function get_file_names(dir_path) {
return new Promise(async (resolve) => {
try {
let ftp_obj = new FTP();
await ftp_obj.create_session();
ftp_obj.ftpLiveClient.list(dir_path, function (err, list) {
ftp_obj.close_connection();
if (err) {
return resolve(false);
}
return resolve(list);
});
} catch (e) {
return resolve(false);
}
});
}

// Read file content from server.
function read_file(file_path) {
return new Promise(async (resolve) => {
try {
let ftp_obj = new FTP();
await ftp_obj.create_session();
ftp_obj.ftpLiveClient.get(file_path, function (err, stream) {
if (err) {
ftp_obj.close_connection();
return resolve(false);
}
let tempBuffer = [];
stream.on("data", (chunk) => {
tempBuffer.push(chunk);
});
stream.on("end", () => {
tempBuffer = Buffer.concat(tempBuffer).toString();
ftp_obj.close_connection();
return resolve(tempBuffer);
});
stream.on("error", (err) => {
ftp_obj.close_connection();
return resolve(false);
});
});
} catch (e) {
return resolve(false);
}
});
}`

I used file data directly, I am not saving the file in the system.

let file_names = await get_file_names(dir_path); let len = file_names.length; while (len--) { let file_name = file_names[len]; let file_path = dir_path + file_name; let data = await read_file(file_path); }

from node-ftp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.