ZIP-Archive ein- und auspacken ... mit Application Express
Erscheinungsmonat |
APEX-Version |
Datenbankversion |
August 2015 |
ab 5.0 |
ab 11.1 |
Der Umgang mit ZIP-Archiven ist etwas ganz alltägliches ... und so ist der
Wunsch naheliegend,
auch in Application Express-Anwendungen mit ZIP-Archiven
umgehen zu können. So ist es denkbar, ein ZIP-Archiv aus mehreren Dokumenten
(BLOBs) zu erstellen und via APEX_MAIL als Email zu
versenden. Eine andere
Anwendung wäre der umgekehrte Weg: Der Anwender lädt ein ZIP-Archiv über eine
Formularseite hoch, die Anwendung packt es automatisch aus und speichert die
unkomprimierten Dateien als BLOBs in eine Tabelle ab.
Ab APEX 5.0 ist der Umgang mit ZIP-Archiven denkbar einfach geworden - denn
das PL/SQL Paket
APEX_ZIP bringt die nötige Funktionalität
mit und ist im APEX-Standardumfang enthalten. Das Einbinden zusätzlicher Bibliotheken
ist, auch in Oracle11g, nicht mehr nötig.
ZIP-Archive bieten sich als Upload-Variante an, wenn viele Dateien hochzuladen
sind. Anstelle vieler File-Upload-Felder oder eines besonders
raffiniert implementierten Multi-File-Uploads reicht unter Umständen ein
ganz einfaches File-Upload-Element aus, in dem der Anwender ein Zipfile hochlädt.
Auf dem Server packt man dieses aus und alle Dateien kommen mit nur einem einzigen
Upload-Vorgang auf dem Server an.
Erstellen Sie also zunächst die Tabelle
MEINE_DOKUMENTE.
Erzeugen Sie danach eine Application Express-Anwendung und darin eine Seite
mit einem Bericht auf die Tabelle. Nehmen Sie für den Bericht die folgende
SQL-Abfrage:
Fügen Sie anschließend ein Element vom Typ
Datei durchsuchen mit Namen
P1_DATEI und eine Schaltfläche hinzu.
Die Seite sollte dann in etwa wie in Abbildung 1 aussehen ...
Abbildung 1: ZIP-Archive in APEX hochladen: Die Anwendungsseite
Wenn Sie nun eine Datei auswählen und auf die Schaltfläche klicken,
passiert noch nichts - schließlich haben Sie noch keinen PL/SQL-Prozeß
zum Auspacken des Archivs erstellt - dies geschieht nun: Erstellen Sie
einen neuen PL/SQL-Prozess wie folgt.
Abbildung 2: Neuen Prozess vom Typ PL/SQL anlegen
Hinterlegen Sie den folgenden PL/SQL Code.
Probieren Sie es nun einmal aus - Wählen Sie ein ZIP-Archiv als Datei aus
und klicken Sie auf die Schaltfläche. Anschließend sollte die Seite in etwa
wie folgt aussehen - das ZIP-Archiv wurde ausgepackt und die Tabelle enthält die einzelnen
Dateien.
Abbildung 3: Das Ergebnis: Anwendungsseite nach dem Hochladen und Auspacken des ZIP-Archivs
Als nächstes erfahren Sie, wie Sie ZIP-Archive mit APEX_ZIP erstellen können. Angenommen,
Sie wollen den Inhalt der Tabelle MEINE_DOKUMENTE per Email versenden. Zum Mailversand haben
wir das Package
APEX_MAIL, welches auch das Hinzufügen von Attachments
zu einer Email unterstützt. Allerdings dürfte es keine gute Idee sein, jede Datei einzeln
als Attachment an diese Mail anzuhängen. Es bietet sich an, ein ZIP-Archiv zu generieren
und dieses zu versenden.
Fügen Sie Ihrer Anwendungsseite eine weitere Schaltfläche SEND_MAIL hinzu - danach kommt
ein weiterer PL/SQL Prozess. Legen Sie diesen analog zum vorigen Prozess an, nur dass
dieser hier bei Klick auf die Schaltfläche SEND_MAIL feuern soll. Hinterlegen Sie den
folgenden PL/SQL-Code.
Abbildung 4: Neuer Button SEND_MAIL in der APEX-Anwendung
Wenn Sie Ihre Seite starten und den neuen Button SEND_MAIL
ausprobieren (Abbildung 4), sollten Sie
danach in Ihrem Mailclient eine Nachricht sehen, die in etwa wie in Abbildung 5
aussieht (vorausgesetzt, der Mailserver ist in Ihrer APEX-Instanz korrekt eingerichtet).
Abbildung 5: Das Ergebnis: Eine Email mit einem ZIP-Archiv als Attachment
Der Umgang mit ZIP-Archiven ist in APEX 5.0 denkbar einfach. Das PL/SQL Paket APEX_ZIP
besteht zwar nur aus vier Prozeduren, damit lässt sich aber nahezu alles Wichtige umsetzen.
Das Beste ist, dass APEX_ZIP zwar ein Teil von Application Express ist, aber auch, komplett
unabhängig davon, in reinen PL/SQL-Umgebungen funktioniert. Der breiten Nutzung steht also
nichts im Wege ...
Zurück zur Community-Seite
|