Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JS Script FTP Upload

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    JS Script FTP Upload

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bitwicht last edited by bitwicht

      Hallo.

      Ich suche ein JS für einen FTP Datei Upload.

      Ich habe hier gelesen das es mittels jsftp gehen soll.

      jsftp habe ich installiert

      xx@raspberrypi:~ $ npm install jsftp
      up to date, audited 17 packages in 2s
      

      Dann habe ich jsftp in der JS Instanz eingetragen und neu gestartet:
      IO-B9.JPG

      Bei meinem Test Script bekomme ich immer einen Fehler:

      const Jsftp = require('jsftp');
      
      const ftp = new Jsftp({
        host: "ftp.example.com",
        port: 21, // defaults to 21
        user: "username", // defaults to "anonymous"
        pass: "password" // defaults to "@anonymous"
      });
      
      ftp.put('myfile.txt', '/path/to/myfile.txt', function(hadError) {
        if (!hadError)
          console.log("File transferred successfully!");
      });
      
      22:13:27.396	info	javascript.0 (60276) Start javascript script.js.FTP-Upload-Test
      22:13:27.421	error	javascript.0 (60276) script.js.FTP-Upload-Test: Error: Cannot find module 'jsftp'
      22:13:27.422	error	javascript.0 (60276) at script.js.FTP-Upload-Test:1:15
      22:13:27.423	error	javascript.0 (60276) at script.js.FTP-Upload-Test:14:3
      22:13:27.423	info	javascript.0 (60276) script.js.FTP-Upload-Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      22:13:27.425	error	javascript.0 (60276) script.js.FTP-Upload-Test: TypeError: Jsftp is not a constructor
      22:13:27.425	error	javascript.0 (60276) at script.js.FTP-Upload-Test:3:13
      22:13:27.425	error	javascript.0 (60276) at script.js.FTP-Upload-Test:14:3
      22:13:30.342	info	javascript.0 (60276) Stop script script.js.FTP-Upload-Test
      

      Findet er das Modul nicht - aber warum oder habe ich einen Fehler im Code ?

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @bitwicht last edited by

        @bitwicht

        Du musst es bei zusätzliche Module eintragen und nicht bei syntaxhilfe

        1 Reply Last reply Reply Quote 0
        • B
          bitwicht last edited by bitwicht

          @OliverIO

          Danke !

          Jetzt kommt kein Fehler mehr aber er läd auch keine Datei auf den FTP.
          Wo sehe ich denn was das Problem ist?

          08:58:52.107	info	javascript.0 (62828) script.js.FTP-Upload-Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          08:58:57.058	info	javascript.0 (62828) Stop script script.js.FTP-Upload-Test
          

          Mein Script:

          Die Datei heißt: daily_previous_month.txt'
          Liegt hier: /opt/iobroker/exports/

          const Jsftp = require('jsftp');
          
          const ftp = new Jsftp({
            host: "xxxx.de",
            port: 21, // defaults to 21
            user: "xxxx", // defaults to "anonymous"
            pass: "xxxxx" // defaults to "@anonymous"
          });
          
          ftp.put('/opt/iobroker/exports/daily_previous_month.txt', '/test/daily_previous_month', function(hadError) {
            if (!hadError)
              console.log("File transferred successfully!");
          });
          
          1 Reply Last reply Reply Quote 0
          • B
            bitwicht last edited by bitwicht

            Die Datei auf dem FTP Server ist immer leer.

            Weiß jemand warum ?

            OliverIO 2 Replies Last reply Reply Quote 0
            • OliverIO
              OliverIO @bitwicht last edited by

              @bitwicht

              du musst schauen was in hadError steht.
              Das dürfte ein Objekt sein in dem mehr Informationen stehen

              Ich selbst verwende die Bibliothek
              https://www.npmjs.com/package/ftp

              var Client = require('ftp');
                  var c = new Client();
                  c.on('ready', function() {
                    c.put(localPath+messageFile, remotePath+messageFile, function(err) {
                      if (err) throw err;
                      c.end();
                    });
                  });
                  c.connect({
                      host:"host",
                      user:"user",
                      password:"password"
                  }
                  );
              

              und das funktioniert mit hosteurope

              1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @bitwicht last edited by

                @bitwicht sagte in JS Script FTP Upload:

                Die Datei auf dem FTP Server ist immer leer.
                Weiß jemand warum ?

                evtl hast du ein Rechteproblem. der user iobroker muss die Datei lesen können.
                testen kannst du das auf der konsole mit

                sudo -u iobroker bash
                

                dann darfst du genau das, was iobroker auf dienen system darf und kannst schauen ob du die datei lesen kannst

                1 Reply Last reply Reply Quote 0
                • B
                  bitwicht last edited by

                  @OliverIO

                  Die Berechtigung passen.

                  Wenn ich npm nehme, muss ich das auch m JS Adapter registrieren?

                  Ich habe noch einen Betrag gefunden, dass ich die Datei erst einlesen muss.

                  
                          fs.readFile('/opt/iobroker/exports/daily_previous_month.txt', 'utf8', function(err, buff){
                              if(err){
                                  console.log(err);
                              }
                              else{
                                  ftp.put(buff, 'daily_previous_month.txt', function(err){
                               if (err) {
                                   console.error(err);
                                        }
                               else {
                                   alert(file + " - uploaded successfuly");
                                    }
                               });
                              }
                          });
                  

                  Hier kommt dann folgender Fehler:

                  10:28:17.127	error	javascript.0 (63246) script.js.FTP-Upload-Test: {}
                  

                  Aber ich habe doch alle Klammer auf und wieder zu ?!

                  1 Reply Last reply Reply Quote 0
                  • B
                    bitwicht last edited by

                    @OliverIO

                    Danke. mit NPM habe ich es jetzt hinbekommen.
                    Beim JSFTP finde ich den Fehler nicht.

                    OliverIO 1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @bitwicht last edited by OliverIO

                      @bitwicht

                      Was meinst du mit? „Wenn ich npm“ nehme?
                      Npm steht für Node Package Manager.
                      Alle Bibliotheken sind da registriert, so das sie einfach heruntergeladen und installiert werden können.
                      Auch für jsftp hast du npm verwendet.

                      Die genaue Anwendung jeder einzelnen Bibliothek steht in der jeweiligen Dokumentation.

                      1 Reply Last reply Reply Quote 0
                      • B
                        bitwicht last edited by

                        @OliverIO

                        Verstehe. Ich meine dann ob ich die andere Bibliothek auch im Adapter als zusätzliche Module eintragen muss.
                        Habe ich so gemacht und es scheint alles zu passen.
                        Danke.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        1.0k
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        2
                        10
                        417
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo