Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie einzelne PDF Datei programmatisch (also per Groovy-Skript) hochladen?

Einklappen
X

Wie einzelne PDF Datei programmatisch (also per Groovy-Skript) hochladen?

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • Wie einzelne PDF Datei programmatisch (also per Groovy-Skript) hochladen?

    Hallo Community,

    ich habe einen erfolgreichen Fall, in dem ich durch einen Button ausgelöst, alle PDF-Dokumente, die sich in einem Verzeichnis auf einem anderen Server befinden hochlade. D.h. alle PDF-Dateien in diesem Verzeichnis werden auf dem Intrexx-Server gespeichert und im Rahmen eines SQL-Inserts auch im Datensatz vermerkt.

    Die hierfür relevanten Bausteine aus meinem Groovy-Skript sehen dafür so aus:
    Code:
    import de.uplanet.lucy.server.businesslogic.util.FileUCHe lper
    import groovy.io.FileType
    def conn = g_dbConnections.systemConnection
    def path = "\\\\fileserver\\PDFs\\In"
    
    new File(path).traverse(
    type:FileType.FILES,
    nameFilter:~/.+\.(?i)pdf$/,
    maxDepth:1
    )
    
    { pdfFile->
      g_log.info("PDF File Start: " + now())
      def barcode = pdfFile.name.split("\\.", 2)[0]
      g_dbQuery.executeUpdate(conn, """INSERT INTO DATAGROUP('5BCBEA19D15DC72586D4C196424310195B69419AE') (LID, LUSERID, undvielemehr...) VALUES (?,?,...)
      {
        setInt(1, lid)
        setInt(2, 1)
        undvielemehr...
      }
    FileUCHelper.moveFileToIntrexx(g_context, pdfFile,"A97CB91E5B97C1C517D717D363B4518BE62C10A2", lid, false)
    }
    Meine Frage ist nun:
    Wie kann ich anstatt alle PDF-Dateien eines Verzeichnisses hochzuladen, eine einzelne PDF-Datei, deren Dateiname mir bekannt ist (z.B. abc123.PDF), aus einem Verzeichnis, in dem sich mehrere PDF-Dateien befinden, programmatisch mit Groovy (also nicht über den File-Picker) hochladen und analog zu obigem Code, das Dokument im Datensatz hinterlegen?

    Ich danke Euch vorab für Euer Feedback.
    Viele Grüße
    Mario

  • #2
    Hallo Mario,

    in deinem konkreten Beispiel könntest du doch das Erzeugen des Datensatzes und das hinzufügen der Datei einfach nur für die Datei durchführen lassen, die dem gewünschten Dateinamen entspricht. Mit pdfFile.name hast du ja glaub ich schon den Namen.

    Ansonsten könntest du mit new File(path) auch ein Dateiobjekt erzeugen, wobei path halt der Pfad zur gewünschten Datei ist. Dann lediglich Datensatz erzeugen und Datei hinzufügen wie gehabt.
    Das ist aus der Erinnerung geschrieben, also kann es durchaus sein, dass ich mich da gerade mit den Befehlen verhasple. Inhaltlich ist es aber korrekt.

    Beste Grüße

    Marco

    Kommentar


    • #3
      Hallo Marco,

      vielen Dank für deinen Tipp.
      Ich habe es nun durch eine andere Herangehensweise lösen können: Ich benenne die Dateien bereits passend bei der Speicherung und bediene mich dann innerhalb der Ausführung des Dateinamens vor dem .PDF und arbeite damit weiter (wird nachfolgend in der Variable 'fileprefix' gespeichert:

      Zunächst der Import von:
      import de.uplanet.lucy.server.businesslogic.util.FileUCHe lper
      import groovy.io.FileType

      Dann das Handling mit dem PDF:

      Code:
      new File(path).traverse(
      type:FileType.FILES,
      nameFilter:~/.+\.(?i)pdf$/,
      maxDepth:1
      )
      { pdfFile->
      fileprefix = pdfFile.name.split("\\.", 2)[0]
      <hier folgt dann der Ablauf des weiteren Codes. Abschließend wird das PDF-Dokument nach Intrexx geholt:>

      Entweder kann man dann die Datei nach Intrexx verschieben, d.h. sie wird in der Quelle gelöscht:
      Code:
      FileUCHelper.moveFileToIntrexx(g_context, pdfFile,"FD5D470EAEC2479A12FEA3DC83A8D4A095C0AA59" , lid, false) 
      }
      Oder man kann die Datei nach Intrexx kopieren und die Quelldatei bleibt bestehen:
      Code:
      FileUCHelper.copyFileToIntrexx(g_context, pdfFile,"FD5D470EAEC2479A12FEA3DC83A8D4A095C0AA59", lid, false)
      Die in dem obigen Snippet verwendete GUID ist die GUID des Datenfeldes vom Typ "file" in jener Datengruppe, in der das entsprechende file - Feld existiert.

      Kommentar

      Lädt...
      X