jsftp загружает дрянные файлы - PullRequest
0 голосов
/ 01 февраля 2020

сегодня у меня проблема с jsftp. Когда я запускаю свой скрипт и upload.txt пуст, jsftp правильно загружает пустой файл на сервер. Когда upload.txt является файлом utf-8 javascript, например const x = "Hello World!";, jsftp загружает файл с именем .pureftpd-upload.5e35d750.15.79c5.1b3bbd87 с 0 байтами (= нет данных).

Вот мой сценарий:

var ftp = new jsftp({
            host: "ftp.example.url",
            port: 21,
            user: user.name,
            pass: user.pass
        });
        ftp.auth(user.name, user.pass, function(err){
            if(err){
                openDialog();
                console.error(err);
                throw err;
            }
            else{
                ftp.put(path_datafile, '/directory/hello.js', function(err){
                    console.error(err);
                    throw err;
                });
            }
        });

(в выводе нет ошибок)

Для тех, кто говорит, что вам нужно сначала прочитать файл:

var ftp = new jsftp({
            host: "ftp.example.url",
            port: 21,
            user: user.name,
            pass: user.pass
        });

        fs.readFile(path_datafile, 'utf8', function(err, buff){
            if(err){
                console.log(err);
            }
            else{
                ftp.put(buff, '/directory/hello.js', function(err){
                    console.error(err);
                    throw err;
                });
            }
        });

Не сработало вообще. Затем он показывает ошибку:

Local file doesn't exist

Ошибка здесь в том, что модуль fs теперь преобразует файл в utf-8 fs.readfile(file, 'utf8', action). Чтобы решить эту проблему, пишите только fs.readfile(file, action), чтобы файл выводился в байтах. Скрипт выдаст false, но работает нормально.

Так что Рагнар прав. Его ответ правильный, когда вы не используете кодировку utf8 с помощью fs. Не используйте его, и он будет работать.

Рагнар: { ссылка }

Его ответ: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...