0

importfile() von Webserver

Hallo zusammen, 

Ich habe folgendes Problem. Ich versuche über eine Schleife Bilder in eine Menge Datensätze zu importieren, so weit so gut aber es sind Produkte wo die Artikelnummer gleichzeitig der Bildname ist.

z.b Artikel 123456 hat das Bild 123456.jpg

Wenn es aber für den Artikel z.b 654321 noch kein Produktbild gibt wird in Ninox ein leeres 654321.jpg angelegt. Hat da jemand ein Idee wie ich das beheben kann??

Detto auch Batchlauf um die Bilder komplett aus denn Attachments zu bekommen.

Danke euch,

lG Chris

17 Antworten

null
    • ⭐ Ninox Partnerin - Kennes Digital
    • Stefanie_K
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Christoph Gerassimoff ,

    zeige doch mal deinen Code, den du bislang nutzt.

    • Christoph_Gerassimoff
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Stefanie

    for i in select Produkte do
        let bildurl := "Weburl" + i.'Art. Nr.' + ".jpg";
        importFile(i, bildurl);
        i.(Produktbild := i.'Art. Nr.' + ".jpg")
    end

    Hiermit importiere. Wie ich alle Bilder lösche auch aus den Attachments bin ich auch noch nicht dahinter gekommen.

    LG Chris

    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Vielleicht hilft Prüfung auf die Endung 

    contains(text(Bild), ".jpg")

      • Christoph_Gerassimoff
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi 

      das verstehe ich nicht ganz, was genau sollte das bewirken?

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Christoph Gerassimoff wenn ich es richtig verstehe, importiert du ja Bilder zu produktnummern. Hier kannst du die Prüfung einsetzen ob producknummer 0815 eine Datei mit Text 0815.jpg hat, wenn ja dann import

      • Christoph_Gerassimoff
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi 

      Ah ok, das heißt if  contains(text(Bild), ".jpg") then und dann der Import. Werde ich mal probieren. Danke mal für den Hinweis 😀

    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Aus Anhang löschen funktion:

    "//
    // Funktion um Anhang im Record zu löschen
    // Aufgerufen von Tbl: XXXXX 
    //";
    function fx_AnhangLoeschen(xUrl : text) do
        let Antwort := "";
        let vHeader := {
                Authorization: "Bearer " + first(select 'Ninox Daten').Key
            };
        Antwort := text(http("DELETE", xUrl, vHeader, ""))
    end

    Aufruf in datensatz:

    let aa := shareFile(Bild);
    let bb := extractx(last(split(text(Bild), "/")), "([^.]*)");
    let vFileName := bb + ".jpg";
    Bild := importFile(Nr, aa, bb + ".pdf");
    "link := shareFile(Bild)";
    let vUrl := "https://api.ninoxdb.de/v1/teams/" + teamId() + "/databases/" + databaseId() +
        "/tables/" +
        tableId("Tabelle") +
        "/records/" +
        Nr +
        "/files/" +
        vFileName;
    fx_AnhangLoeschen(text(vUrl))

      • Christoph_Gerassimoff
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi 

       

      Mit der API hab ich noch nicht wirklich was gemacht, muss ich da noch irgendwo nen API Key hinterlegen? Welche Variablen muss ich da tauschen? Kannst du mir das vl. noch etwas näher erklären, wäre echt cool.

      Danke dir.

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Christoph Gerassimoff leg eine Tabelle an. Hier den Api key. Den kannst du in deinem Account abholen. Bei mir heist die Tabelle ninox daten. Das feld key.

      Warum: sobald du ein Bild überschreiben willst wird dieses in den Anhang verschoben. Diesen kannst du nur mit der api löschen.

      Bild = dein Bildfeldname

      TABELLE = Dein Tabellen Name wo das bildfeld ist

      In der Funktion ist Ninox Daten . key ... Die Tabelle wo der Api key hinterlegt ist.

      Bitte probiere das nicht an einer produktiven Datenbank!!

      • Christoph_Gerassimoff
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi 

      Super Danke dir,

      Werde das heute noch testen in einer TEST DB. Vielen lieben Dank.

    • Christoph_Gerassimoff
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Das löschen der Anhänge funktioniert perfekt vielen Dank dafür.

    Das importieren leider nicht. Es wird in Ninox trotzdem ein File angehängt obwohl am Webserver für das Produkt kein Bild existiert.

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    importFile() prüft nicht, ob tatsächlich ein File hinterlegt ist.
    Deshalb wird eine Leerdatei angelegt unter dem Filenamen, der in der Url enthalten ist.
    Ninox impliziert mit der hinterlegten Adresse in importFile(), dass auch eine entsprechende Datei vorhanden ist.
     

    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ja, das wird - wie UweG schon schrieb - nicht funktionieren.

    Ich habe für einen Kunden ein ähnliches Konstrukt aufgesetzt. Du wirst immer dieses graue Bild haben, wenn ein Bild nicht existiert. Eine Lösung wäre, vorher über API den Speicherort abzufragen (man kann über RestAPI zB. direkt einen Dropbox Ordner abfragen... wenn dann das entsprechende JPG dort vorhanden ist, findet der Import in die NINOX statt.

    Oder du gehst einen Umweg über MAKE (Integromat) mit entsprechendem Filter. "Wenn Bild auf FTP dann upload File in Ninox".... 

    • Christoph_Gerassimoff
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Vielen Dank für euren Input, 

    Hab es nun gelöst, das ich immer wieder eine Fileliste generiere die ich dann importiere und mir am Artikel ein Flag Field befüllt. Dann starte ich die Aktualisierung der Bilder unter der Condition if flag = 1 then…

    Hab jetzt erfolgreich 39.000 Bilder importiert 😀
     

    PS: Bilder werden nun von einem lokalen Medienserver MAMP importiert somit Erspare ich mir den FTP Upload. 
     

    LG Chris 

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Moin Christoph Gerassimoff ,

    ich hab einige unterschiedliche Szenarien mit Files auf externen Servern und find das unter dem Aspekt Dateien auslagern bzw. Verlinkung immer wieder spannend.

    MAMP kenne bisher nicht. Verstehe ich aus deiner bzw. der MAMP - Beschreibung richtig, dass du die Mac App verwendest und es deshalb lokal funktioniert?

      • Christoph_Gerassimoff
      • vor 1 Jahr
      • Gemeldet - anzeigen

      DIGITOOL genau richtig MAMP ist mein Webserver bzw. Localhost und dort liegen die Bilder drin. Somit hab ich die Möglichkeit per https://localhost:Port/folder meine Bilder in die Mac App zu laden. Diese Vorgang wird nur von mir ausgeführt, somit ist das realisierbar. 
       

      Ich arbeite an einer PIM Lösung mit ca. 88.000 Produkten, wo mehrere User Beschreibungen, Klassifizierung etc. Hinterlegen und dann über das CSV Feed diese Daten in einen WooCommerce Shop 1 mal  täglich zu pushen.

      • T_Bartzsch
      • vor 1 Jahr
      • Gemeldet - anzeigen

      DIGITOOL Ronald, hast Du da einen Favoriten bei der Vorgehensweise? Ich habe auch schon verschiedenes ausprobiert (eigener FTP, Dropbox und Cloudinary via API)  suche nun aber eine Lösung wo ich die Daten (PDF und JPG) final ablege, aber ein Thumbnail in der NINOX habe... 

      Ich werde es mal mit Sharepoint versuchen, da ich diverse Apps habe, die mit Sharepoint/Ninox arbeiten.