0

Hilfe beim Auslagern von Datein

Grüßt euch,

kann mir jemand helfen bei dem Thema?

Kurz zum Vorgang:

Es werden in Ninox Bilder und ein pdf als Abrechnung in Bildfelder eingefügt. Dann sollen die Dateien umbenannt werden und schließlich werden sie per Mail gesendet. Im Anschluss werden alle Dateien zu Cloudinary hochgeladen, in der Ninox gelöscht, so dass am Ende nur noch eine HTML anzeige aller Dateien zur Verfügung steht. Sollte man die Dateien nochmals brauchen oder bearbeiten wollen, kann man sie in die Bildfelder zurückladen. Erlaubt sind die Formate jpg & pdf , auch darf die Einzeldatei nicht größer als 10 MB sein. Die gesamt Größe für den Mailversand 20 MB nicht überschreiten.

So weit, so gut. Habe es mal versucht alleine hinzubekommen, doch hab ich noch ein paar Probleme, die ich nicht gelöst bekomme.

  • Beim uploade zu Coudinary werden die Dateien nochmals umbenannt. (es wird noch mal die Dateiendung dran gehangen. Was vorher: xyz.jpg hieß, wird zu: xyz.jpg.jpg
  • Es dürfen keine Dateien in Ninox gelöscht werden, wenn der Upload nicht erfolgreich war von ALLEN Dateien
  • wenn man die Dateien von Cloudinary zurück zu Ninox lädt, so müssen diese auf Cloudinary auch gelöscht werden, nicht nur um Dateileichen zu vermeiden, sondern weil die veränderte Datei denselben Namen bekommt so dass die Datei dann auf Cloudiynary nicht ersetzt wird, da sie schon existiert.
  • Schluss endlich müsste ich das Ganze beim ersten Durchlauf für alle Datensätze ausführen (Umbenennen , zu Cloudinary senden und in Ninox löschen ca. 1650 Datensätze).

Hab bestimmt noch viel Blödsinn in den Skripten mangels wissen, aber vielleicht könnt ihr mir helfen.

10 Antworten

null
    • Geschäftsführerin bei Kennes Digital
    • Stefanie_K
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Läuft das über Maker, Zapier, n8n oder direkt über die API?

      • Michi.1
      • vor 10 Monaten
      • Gemeldet - anzeigen

       Mail über dein blueprint von Make und der Rest über API nach Anleitung von t_bartzsch. Klappt so weit bis auf die aufgezählten Punkte. Aber da hab ich eben null Ahnung. Leider wird der Platz langsam eng. 

      • Michi.1
      • vor 10 Monaten
      • Gemeldet - anzeigen

      das ist der Beitrag https://forum.ninox.de/t/83h43s3/bilddatenbanken

      Find es halt gut es ohne 3. Anwendung. 

    • Michi.1
    • vor 10 Monaten
    • Gemeldet - anzeigen
    let id := text(Nr);
        let aa := number(now());
        let bb := text(aa);
        let BildfileName := id + bb + last(split(text(Abrechnung), "/"));
        let Bildlink := shareFile(Abrechnung);
        let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
        let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
        let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
        let webhook := first(select NinoxKeys).text(WebhookCloudinary);
        let data := {
                file: Bildlink,
                folder: "UNTERORDNER",
                upload_preset: uploadkey,
                public_id: BildfileName,
                api_key: cloudikey
            };
        do as server
            let response := http("POST", webhook, data);
            responseAbrechnung := text(response);
            linkAbrechnung := text(response.result.secure_url)
    

    Mit der puplic_id aus Record Nr+Zeitstempel hab ich das Problem des Zuordnens gelöst. Es werden neue oder geänderte Bilder hochgeladen und auch für den jeweiligen Record zurückgegeben als URL. Ging vorher nicht, da die ID nur aus Datum, Bildfeldname und Kundenname bestand.

    • Michi.1
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Die Dateiendungen beim zurück gegebenen Link, kann man auch ignorieren, da die Dateien vor dem erneuten Versenden per Mail eh wieder umbenannt werden.

    Bleibt noch das größte Problem, wie verhindere ich das Löschen der Dateien in Ninox, wenn ein Fehler bei einem Upload entstanden ist? Und wie mache ich das sichtbar als Fehlermeldung?

    Wobei so eine Fehlermeldung jetzt nicht schlimm ist, da ja kein File vorhanden ist .

    {"result":{"error":{"message":"Missing required parameter - file"}}}

     

    Noch ein Szenario müsste gelöst werden.

    Wenn ich die Dateien schon gesendet habe, nun aber noch eine Datei hinzufüge oder ändern möchte, so lade ich alle Dateien zurück in Ninox, mit der neuen ID (Zeitstempel) fabriziere ich aber für diesen Datensatz beim erneuten Hochladen Duplikate, welche nur Platz wegnehmen. Wie kann man das verhindern?

    Bsp.: 5 Dateien sind enthalten, jetzt lade ich 1 zusätzliches Bild hoch. So sind dann am Ende zu diesem Record 11 Dateien in Cloudinary abgelegt. Da sich ja der Zeitstempel und somit die ID geändert hat.

    • Michi.1
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Dupletten werden jetzt so weit wie es mir möglich ist verhindert. Fehlt noch das keine Datein gelöscht werden dürfen bei einer fehlerhaften übertragung.

    let pr := MBAbrechnung + MBBild1 + MBBild2 + MBBild3 + MBBild4 + MBBild5 + MBBild6 + MBBild7 +
        MBBild8 +
        MBBild9 +
        MBBild10;
    if pr > 20 then
        alert("Mailgröße überschritten (max: 20 MB möglich) versenden NICHT möglich! Bitte die Bilder verkleinern und erneut senden.")
    else
    
        let Tag := 'Abrechnung vom';
        let Kunde := replacex('Aufträge'.Name, "[^äöüÄÖÜ!&?,. \w]", "");
        let fileAbrechnung := shareFile(Abrechnung);
        let fileBild1 := shareFile(Bild1);
        let fileBild2 := shareFile(Bild2);
        let fileBild3 := shareFile(Bild3);
        let fileBild4 := shareFile(Bild4);
        let fileBild5 := shareFile(Bild5);
        let fileBild6 := shareFile(Bild6);
        let fileBild7 := shareFile(Bild7);
        let fileBild8 := shareFile(Bild8);
        let fileBild9 := shareFile(Bild9);
        let fileBild10 := shareFile(Bild10);
        let endAbrechnung := if contains(text(Abrechnung), ".PDF") or contains(text(Abrechnung), ".pdf") then
                ".pdf"
            else
                if contains(text(Abrechnung), ".jpg") or contains(text(Abrechnung), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild1 := if contains(text(Bild1), ".PDF") or contains(text(Bild1), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild1), ".jpg") or contains(text(Bild1), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild2 := if contains(text(Bild2), ".PDF") or contains(text(Bild2), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild2), ".jpg") or contains(text(Bild2), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild3 := if contains(text(Bild3), ".PDF") or contains(text(Bild3), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild3), ".jpg") or contains(text(Bild3), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild4 := if contains(text(Bild4), ".PDF") or contains(text(Bild4), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild4), ".jpg") or contains(text(Bild4), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild5 := if contains(text(Bild5), ".PDF") or contains(text(Bild5), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild5), ".jpg") or contains(text(Bild5), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild6 := if contains(text(Bild6), ".PDF") or contains(text(Bild6), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild6), ".jpg") or contains(text(Bild6), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild7 := if contains(text(Bild7), ".PDF") or contains(text(Bild7), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild7), ".jpg") or contains(text(Bild7), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild8 := if contains(text(Bild8), ".PDF") or contains(text(Bild8), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild8), ".jpg") or contains(text(Bild8), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild9 := if contains(text(Bild9), ".PDF") or contains(text(Bild9), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild9), ".jpg") or contains(text(Bild9), ".jpeg") then
                    ".jpg"
                end
            end;
        let endBild10 := if contains(text(Bild10), ".PDF") or contains(text(Bild10), ".pdf") then
                ".pdf"
            else
                if contains(text(Bild10), ".jpg") or contains(text(Bild10), ".jpeg") then
                    ".jpg"
                end
            end;
        let bezAbrechnung := Tag + "-" + Kunde + "-" + "Abrechnung";
        let bezBild1 := Tag + "-" + Kunde + "-" + "Bild1";
        let bezBild2 := Tag + "-" + Kunde + "-" + "Bild2";
        let bezBild3 := Tag + "-" + Kunde + "-" + "Bild3";
        let bezBild4 := Tag + "-" + Kunde + "-" + "Bild4";
        let bezBild5 := Tag + "-" + Kunde + "-" + "Bild5";
        let bezBild6 := Tag + "-" + Kunde + "-" + "Bild6";
        let bezBild7 := Tag + "-" + Kunde + "-" + "Bild7";
        let bezBild8 := Tag + "-" + Kunde + "-" + "Bild8";
        let bezBild9 := Tag + "-" + Kunde + "-" + "Bild9";
        let bezBild10 := Tag + "-" + Kunde + "-" + "Bild10";
    "//
    //Datein nur umbenennen wenn der Dateiname nicht identisch ist mit dem Link von Cloudinary
    //";
        if item(split(linkAbrechnung, "/"), 8) != last(split(text(Abrechnung), "/")) then
            Abrechnung := importFile(this, fileAbrechnung, bezAbrechnung + endAbrechnung)
        end;
        if item(split(linkBild1, "/"), 8) != last(split(text(Bild1), "/")) then
            Bild1 := importFile(this, fileBild1, bezBild1 + endBild1)
        end;
        if item(split(linkBild2, "/"), 8) != last(split(text(Bild2), "/")) then
            Bild2 := importFile(this, fileBild2, bezBild2 + endBild2)
        end;
        if item(split(linkBild3, "/"), 8) != last(split(text(Bild3), "/")) then
            Bild3 := importFile(this, fileBild3, bezBild3 + endBild3)
        end;
        if item(split(linkBild4, "/"), 8) != last(split(text(Bild4), "/")) then
            Bild4 := importFile(this, fileBild4, bezBild4 + endBild4)
        end;
        if item(split(linkBild5, "/"), 8) != last(split(text(Bild5), "/")) then
            Bild5 := importFile(this, fileBild5, bezBild5 + endBild5)
        end;
        if item(split(linkBild6, "/"), 8) != last(split(text(Bild6), "/")) then
            Bild6 := importFile(this, fileBild6, bezBild6 + endBild6)
        end;
        if item(split(linkBild7, "/"), 8) != last(split(text(Bild7), "/")) then
            Bild7 := importFile(this, fileBild7, bezBild7 + endBild7)
        end;
        if item(split(linkBild8, "/"), 8) != last(split(text(Bild8), "/")) then
            Bild8 := importFile(this, fileBild8, bezBild8 + endBild8)
        end;
        if item(split(linkBild9, "/"), 8) != last(split(text(Bild9), "/")) then
            Bild9 := importFile(this, fileBild9, bezBild9 + endBild9)
        end;
        if item(split(linkBild10, "/"), 8) != last(split(text(Bild10), "/")) then
            Bild10 := importFile(this, fileBild10, bezBild10 + endBild10)
        end;
        sleep(1000);
        let Anhang_auslesen := for i in files(this) do
                let alleFileName := last(split(text(i), "/"));
                let BildfileName := last(split(text(Abrechnung), "/"));
                let BildfileName1 := last(split(text(Bild1), "/"));
                let BildfileName2 := last(split(text(Bild2), "/"));
                let BildfileName3 := last(split(text(Bild3), "/"));
                let BildfileName4 := last(split(text(Bild4), "/"));
                let BildfileName5 := last(split(text(Bild5), "/"));
                let BildfileName6 := last(split(text(Bild6), "/"));
                let BildfileName7 := last(split(text(Bild7), "/"));
                let BildfileName8 := last(split(text(Bild8), "/"));
                let BildfileName9 := last(split(text(Bild9), "/"));
                let BildfileName10 := last(split(text(Bild10), "/"));
                let vergleich := unique(alleFileName);
    "//
    //Alle Anhänge löschen die nicht identisch sind mit den Bildfeldern
    //";
                for r in vergleich do
                    if BildfileName != r and BildfileName1 != r and BildfileName2 != r and
                                                    BildfileName3 != r and
                                                BildfileName4 != r and
                                            BildfileName5 != r and
                                        BildfileName6 != r and
                                    BildfileName7 != r and
                                BildfileName8 != r and
                            BildfileName9 != r and
                        BildfileName10 != r then
                        let vUrl := "https://api.ninoxdb.de/v1/teams/" + teamId() + "/databases/" + databaseId() +
                            "/tables/" +
                            tableId(this) +
                            "/records/" +
                            Nr +
                            "/files/" +
                            r;
                        fx_AnhangLoeschen(text(vUrl))
                    end
                end
            end;
        let mailtext := ---
    <p>Sehr geehrte Damen und Herren,</p><p>anbei die Abrechnung von { text('Abrechnung vom') }.<br><br>
    <p>F&uuml;r R&uuml;ckfragen stehe ich Ihnen jederzeit gerne telefonisch zur Verf&uuml;gung.</p>
    </p>
            ---;
    "//
    // Mail über Make versenden
    //";
        let vWebhook := first(select NinoxKeys).text(WebhookMake);
        let vRecordID := text(number(this));
        let An := 'Aufträge'.'E-Mail';
        let bet := "Abrechnung vom" + " " + 'Abrechnung vom' + " " + "/ " + 'Aufträge'.Name;
        let data := {
                RecordID: vRecordID,
                vMailAn: An,
                vBetreff: bet,
                vTextHTML: mailtext
            };
        do as server
            http("POST", vWebhook, {
                'Content-Type': "application/json"
            }, data)
        end;
        'versendet?' := true;
        sleep(1000);
    "//
    //Datein nur zu Cloudinary senden wenn sie nicht den identischen filenamen haben wie im Link,
    dadurch werden nur neue oder geänderte Files übertragen und man kann die Datein so oft man will in Ninox zurück holen, wenn sie nicht geändert wurden werden sie nicht noch mal an Cloudinary versendet
    //";
        if Abrechnung and
            item(split(linkAbrechnung, "/"), 8) != last(split(text(Abrechnung), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName := id + bb + last(split(text(Abrechnung), "/"));
            let Bildlink := shareFile(Abrechnung);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseAbrechnung := text(response);
                linkAbrechnung := text(response.result.secure_url)
            end
        end;
        if Bild1 and item(split(linkBild1, "/"), 8) != last(split(text(Bild1), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName1 := id + bb + last(split(text(Bild1), "/"));
            let Bildlink := shareFile(Bild1);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName1,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild1 := text(response);
                linkBild1 := text(response.result.secure_url)
            end
        end;
        if Bild2 and item(split(linkBild2, "/"), 8) != last(split(text(Bild2), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName2 := id + bb + last(split(text(Bild2), "/"));
            let Bildlink := shareFile(Bild2);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName2,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild2 := text(response);
                linkBild2 := text(response.result.secure_url)
            end
        end;
        if Bild3 and item(split(linkBild3, "/"), 8) != last(split(text(Bild3), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName3 := id + bb + last(split(text(Bild3), "/"));
            let Bildlink := shareFile(Bild3);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName3,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild3 := text(response);
                linkBild3 := text(response.result.secure_url)
            end
        end;
        if Bild4 and item(split(linkBild4, "/"), 8) != last(split(text(Bild4), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName4 := id + bb + last(split(text(Bild4), "/"));
            let Bildlink := shareFile(Bild4);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName4,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild4 := text(response);
                linkBild4 := text(response.result.secure_url)
            end
        end;
        if Bild5 and item(split(linkBild5, "/"), 8) != last(split(text(Bild5), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName5 := id + bb + last(split(text(Bild5), "/"));
            let Bildlink := shareFile(Bild5);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName5,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild5 := text(response);
                linkBild5 := text(response.result.secure_url)
            end
        end;
        if Bild6 and item(split(linkBild6, "/"), 8) != last(split(text(Bild6), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName6 := id + bb + last(split(text(Bild6), "/"));
            let Bildlink := shareFile(Bild6);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName6,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild6 := text(response);
                linkBild6 := text(response.result.secure_url)
            end
        end;
        if Bild7 and item(split(linkBild7, "/"), 8) != last(split(text(Bild7), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName7 := id + bb + last(split(text(Bild7), "/"));
            let Bildlink := shareFile(Bild7);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName7,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild7 := text(response);
                linkBild7 := text(response.result.secure_url)
            end
        end;
        if Bild8 and item(split(linkBild8, "/"), 8) != last(split(text(Bild8), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName8 := id + bb + last(split(text(Bild8), "/"));
            let Bildlink := shareFile(Bild8);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName8,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild8 := text(response);
                linkBild8 := text(response.result.secure_url)
            end
        end;
        if Bild9 and item(split(linkBild9, "/"), 8) != last(split(text(Bild9), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName9 := id + bb + last(split(text(Bild9), "/"));
            let Bildlink := shareFile(Bild9);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName9,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild9 := text(response);
                linkBild9 := text(response.result.secure_url)
            end
        end;
        if Bild10 and item(split(linkBild10, "/"), 8) != last(split(text(Bild10), "/")) then
            let id := text(Nr);
            let aa := number(now());
            let bb := text(aa);
            let BildfileName10 := id + bb + last(split(text(Bild10), "/"));
            let Bildlink := shareFile(Bild10);
            let uploadkey := first(select NinoxKeys).text(CloudinaryUpload);
            let ninoxkey := first(select NinoxKeys).text(NinoxAPI);
            let cloudikey := first(select NinoxKeys).text(CloudinaryAPI);
            let webhook := first(select NinoxKeys).text(WebhookCloudinary);
            let data := {
                    file: Bildlink,
                    folder: "Abrechnungen",
                    upload_preset: uploadkey,
                    public_id: BildfileName10,
                    api_key: cloudikey
                };
            do as server
                let response := http("POST", webhook, data);
                responseBild10 := text(response);
                linkBild10 := text(response.result.secure_url)
            end
        end;
    "//
    //Bildfelder leeren
    //";
        Abrechnung := null;
        Bild1 := null;
        Bild2 := null;
        Bild3 := null;
        Bild4 := null;
        Bild5 := null;
        Bild6 := null;
        Bild7 := null;
        Bild8 := null;
        Bild9 := null;
        Bild10 := null;
    "//
    //restlichen Anhänge (auch die nicht sichtbaren löschen)
    //";
        let Anhang_auslesen := for i in files(this) do
                let alleFileName := last(split(text(i), "/"));
                let vUrl := "https://api.ninoxdb.de/v1/teams/" + teamId() + "/databases/" + databaseId() +
                    "/tables/" +
                    tableId(this) +
                    "/records/" +
                    Nr +
                    "/files/" +
                    alleFileName;
                fx_AnhangLoeschen(text(vUrl))
            end;
        uploade = true
    end
    
    • Michi.1
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Vielleicht kanns ja jemand gebrauchen, oder verbessert das ganze noch.

    Geil wäre das manuelle löschen von Datein auf Cloudinary von Ninox aus.

    Der Rest sollte jetzt alles funktionieren.

    • Kruna
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Hallo zusammen,

    so langsam muss ich mich auch mit dem Thema 'auslagern von Bilddateien' beschäftige, da ma ja mit 2GB dann doch schnell an Grenzen stoßen wird, falls Ninox an seiner Preispolitik bzw eher 'Speicherplatz-Politik' nichts ändern wird.

    Daher die Frage, wie schaut es eigentlich aus, wenn man einen NAS Server (Synology) hat?

    Kann ich die Bilddateien auf meinen SynologyServer laden?

    Oder auf die webseite? zb https://www.meinewebseite.de/ausgelagerterOrdner

    Vielen Dank.

    Gruß kruna

    • T_Bartzsch
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Hallo Zusammen, so langsam ist Licht am ende des Tunnels, da kann man auch mal wieder ins Forum schauen... 

    Webseite/Ordner geht über Drittanbieter wie Make od. Zapier... es gibt auch eine reine FTP-API (ftp-api.com) - ABER (es wäre ja zu schön) - diese erwartet beim File-upload den Inhalt als base64, was NINOX leider nicht anbietet (genauso wie übrigens den Upload als multiform/form data - was viele weitere API Dienste in dieser Kategorie (z.B. upload von Rechnungs-PDF in ein Buchhaltungsprogramm) ebenfalls ausschliesst ... (ich habe übrigens vorher NIE beim schreiben Klammern verschachtelt - aber es geht ja um NINOX ) ) :)

    Lokale Daten (auch NAS) geht evtl. über N8N - damit habe ich mich bisher aber noch nicht beschäftigt - ich glaube  hat da mehr Wissen...

     ... ich schaue mir das mal an und lade deine Datenbank herunter. Der "public name" bei Cloudinary muss übrigens OHNE Dateiendung angegeben werden, sonst kommt es zu diesen Doppel-endungen...

      • Michi.1
      • vor 10 Monaten
      • Gemeldet - anzeigen

       danke dir, will nichts falsches machen, was aber durch unwissenheit mal schnell passieren kann. 

Content aside

  • vor 10 MonatenZuletzt aktiv
  • 10Antworten
  • 189Ansichten
  • 4 Folge bereits