mscdex / node-ftp

An FTP client module for node.js
MIT License
1.13k stars 244 forks source link

put method creates file but does not write in it #245

Open INanaay opened 5 years ago

INanaay commented 5 years ago

I've been trying to upload a local file to my ftp server.

I've created a readable stream from the path of my file like so :

const stream = fs.createWriteStream(path);

Then, on the end event of the stream, I call the put method :

` stream.on('end', () => { client.connect(config);

client.on('close', (hadErr) => {
  logger.log('info', `client upload closed ${hadErr}`);
});

client.on('error', (err) => {
  logger.log('error', `client upload error ${err}`);
  client.end();
});

client.on('ready', () => {
  client.mkdir(Path.dirname(path), true, (err) => {
    if (err) {
      logger.log('error', `upload mkdir error ${err}`);
      client.end();
    }

    client.put(stream, path, (err) => {
      stream.on('error', (err) => {
        logger.log('error', `upload stream error ${err}`);
        client.end();
      });

      if (err) {
        logger.log('error', `upload put error ${err}`);
        stream.destroy();
        client.end();
        return;
      }

      client.end();
    });
  });
});
})

`

I see my file on the server but it has a size of 0 bytes. Is there something I'm missing here ?

Edit : After deleting the stream.on('data') event, the file is sucessfully transfered, I really don't understand,

MaxDesplanches commented 5 years ago

same problem here.

ACMotanya commented 4 years ago

Same problem-- it worked for months and then all of a sudden stopped.