Dateinamen bei Downloads

Allgemeine Funktionsweise

In der Tabelle "Download Dateinamen" lassen sich reguläre Ausdrücke definieren, auf die über security/download herunterzuladende Dateipfade geprüft wird. Trifft der reguläre Ausdruck zu, kann auf ein Package verwiesen werden, das die Matches aus dem regulären Ausdruck in eine Methode hineingereicht bekommt, und einen Download-Dateinamen zurückliefert. Dieser wird für den Dateinamen des Downloads im Browser verwendet.

In der Tabelle können beliebig viele Einträge angelegt werden. Security/Download verwendet den ersten, dessen regulärer Ausdruck auf den Dateipfad der herunterzuladenden Datei zutrifft.

Konfiguration

Ein Datensatz benötigt folgende Informationen

Regulärer Ausdruck

Ein regulärer Ausdruck, der auf den Dateipfad angewandt wird. Dieser wird mittels preg_match ausgeführt.

Callback

Ein Package, das das Interface Brandbox\Framework\Security\Download\Lib\Interfaces\DownloadFilenameInterface implementiert.

Parameter

Ein JSON-Objekt, dessen benamte Properties den Wert des Array-Indizes aus dem Match-Result von preg_match haben.

Beispiel

Das folgende Beispiel ist gleichzeitig ein Standard-Eintrag für die Benamung der Downloads von Druckdateien.

Regulärer Ausdruck

/share\/public\/client-([0-9]*)\/domain-([0-9]*)\/table-shopOrder\/user-([a-zA-Z]*)-([0-9]*)\/([0-9]*)\/([0-9]*)\/([0-9]*)\/([0-9]*)-([0-9]*)-([0-9]*)-([a-zA-Z_]*)\.([a-z]*)/

Dieser reguläre Ausdruck trifft auf Druckdateien von Bestellungen zu und extrahiert:

  • clientID

  • domainID

  • Tabellen-Identifier der Benutzertabelle

  • User-ID

  • Bestellnummer aus 3 Ordnerebenen

  • shopOrderID

  • shopOrderArticleID

  • articleTemplateID

  • Name des Ausgabeformats

  • Dateiendung

Callback

Bestellungen (Shop/Order)

Parameter

{"shopOrderID":8,"shopOrderArticleID":9}

Aus den oben ermittelten Matches des regulären Ausdrucks werden nun die Parameter mit den Nummern 8 und 9 (shopOrderID und shopOrderArticleID) den entsprechenden Parameternamen zugewiesen

Der Mechanismus ruft nun die Methode getDownloadFilename in der Engine von Shop/Order auf (diese Engine muss das oben beschriebene Interface implementieren) und übergibt als Parameter einen Array mit den benamten Parametern shopOrderID und shopOrderArticleID und den aus dem Dateipfad ermittelten zugehörigen Werten. Die Methode muss nun einen Dateinamen-String zurückliefern (inklusive Dateiendung).