Dieses Konzept wird ergänzt durch die Möglichkeit, Dateien und Bilder auf zwei verschiedene Arten zu verwalten. Kunden können entweder Dateinamen in eigenen Tabellen bereitstellen und diese in Ausgabeseiten über das sd:attribute -Element korrekt einbinden. Zusätzlich oder alternativ können Spalten vom (server-daten-) Datentyp file deklariert werden. Wird bei der Deklaration dieser Spalten eine Zeile aus einer FTP-Tabelle angegeben, so lassen sich Dateien und Bilder von Nutzern uploaden und werden - nach dem erfolgreichen Speichern der Grundzeile - per FTP unter Verwendung der in der FTP-Tabelle hinterlegten Daten auf den Kundenserver verschoben. Handelt es sich beim Upload um ein Bild, so kann dieses in der Größe geändert und ein Vorschaubild, eine verkleinerte Zweitversion (Thumbnail) erzeugt und gespeichert werden.
Wesentlich: Direkt nach dem Speichern einer FTP-Tabelle (beim Erstellen und beim Löschen) müssen die internen Systemprozeduren neu generiert werden. Die interne Tabelle für die Tabellenspalten erhält eine neue Relation, dies wirkt sich an diversen Stellen aus. Die Systemprozeduren werden gewöhnlich nur bei der Ersteinrichtung der Datenbank erzeugt. Während dieser Zeit ist die Datenbank inkonsistent, jeder Klick auf ein Menü kann zu Fehlermeldungen führen. Verwenden Sie deshalb Ihre Datenbank ein bis fünf Minuten nach dem Speichern einer FTP-Tabelle nicht - ansonsten erhalten Sie Fehlerhinweise, die später wieder verschwinden (und server-daten erhält jedesmal eine Mail). Aber eine FTP-Tabelle erstellen Sie bei Bedarf auch nur ein einziges Mal.
Spalten der FTP-Tabelle:
ftp://Ihre-Domain.de/eingetragen. Falls der FTP-Zugang auch über eine IP-Nummer möglich ist, kann auch
ftp://Ihre-IP-Nummer/verwendet werden.
Beispiel: Auf manchen Unix-Systemen wird dem FTP-Nutzer 'mustermann' das Verzeichnis
/home/m/mustermann/zugeordnet. Die per HTTP erreichbaren Daten liegen jedoch im Verzeichnis
/home/m/mustermann/public_html/Folglich muß das Verzeichnis
public_html/in dieses Feld eingetragen werden.
Beispiel:
http://ihre-domain.de/Beachten Sie, daß hier nicht Ihre server-daten-Subdomain oder 'http://ihr-datenbank-name.server-daten.de/' einzutragen ist. Stattdessen wird in dieses Feld der erste Teil der Url Ihrer Domain eingetragen.
Alle hochgeladenen Dateien werden minimal in einem Unterordner /sd/ abgelegt, um bestehende Strukturen nicht zu beeinträchtigen. Zusätzlich können die Dateien in einen Unterordner mit dem Tabellennamen, Tabellenname + Spaltenname, dem Nutzernamen oder der Nutzer-SID abgelegt werden. Letzteres ist ein für jeden Nutzer vom System erstellter, eindeutiger Zufallswert. Statt des Tabellennamens kann auch der unter 'Ordnername' festgelegte Name verwendet werden.
Als Name kann entweder der Originalname, eine Kombination aus Originalname und der Zeilen-ID, '_' plus die Zeilen-ID, eine Kombination aus Originalname und Zufallswert oder ein reiner Zufallswert verwendet werden. Ein Zufallswert bietet den Vorteil, daß der Wert so gut wie nicht erraten werden kann.
Ist das Feld 'maximale Größe' leer, so können derzeit Dateien bis zu 50 MB hochgeladen werden. Ein gesetzter Wert '1000' gestattet nur den Upload von maximal 1-Megabyte großen Dateien (1000 * 1000). Der Wert 0 führt dazu, daß jeder Transfer unterbunden wird. Beachten Sie, daß diese Prüfung erst nach dem Upload erfolgen kann.
Für diese vier zusammenhängenden Werte gilt:
Zuerst wird das Bild auf die gewünschte Höhe skaliert. Anschließend wird das Bild von links/rechts her auf die Breite abgeschnitten, die dem Absolutbetrag der negativen Pixel-Breite entspricht.
Beispiel:
Bildhöhe in Pixel: 100 Bildbreite in Pixel: -100Das Bild wird auf eine Höhe von 100 Pixeln skaliert und anschließend von links und rechts her abgeschnitten, so daß noch 100 Pixel verbleiben. Das Ergebnisbild ist folglich immer 100 * 100 Pixel groß und nicht verzerrt.
Eine Kombination aus negativer Pixel-Höhe und positiver Pixel-Breite wird analog interpretiert: Zunächst wird gemäß der positiven Pixel-Breite skaliert, anschließend das Bild von oben und unten her abgeschnitten.
Beispiel:
Bildhöhe in Pixel: -50 Bildbreite in Pixel: -100Vom Bild wird nur das Rechteck aus der Bildmitte mit einer Breite von 100 und einer Höhe von 50 Pixeln gespeichert.
Beispiel:
Bildbreite in Pixel: 100 Thumb-Breite in Prozent: 50Dies komprimiert das hochgeladene Bild unter Beibehaltung der Proportionen auf eine Breite von 100 Pixeln und erstellt ein Vorschaubild mit der Breite von 50 Pixeln.
Die erste Option legt fest, daß keine Thumbnails erstellt werden, obwohl es sich bei den zugelassenen Dateitypen um Bilder handeln kann. Die beiden weiteren Optionen beeinflussen nur die Darstellung innerhalb der internen Menüs und legen fest, ob hier nur der Dateiname oder zusätzlich das Vorschaubild angezeigt wird.
Beispiel: Eine Spalte heiße 'bildSpalte'. Der Wert für 'bildSpalte' ist abhängig von der Option für den Dateinamen. Der tatsächlich genutzte Dateiname wird mit '_bildSpalte_name', der Pfad in der Spalte '_bildSpalte_path' und der Name der Thumbnail-Dateil in der Spalte '_bildSpalte_thumb' erzeugt.
Mittels des sd:attribute -Elements lassen sich damit alle gewünschten Verlinkungen und Bilddarstellungen erzeugen. Es genügt, einen Abschnitt wie den folgenden zusätzlich zu einer Ausgabezelle innerhalb eines sd:rs -Elements einzufügen:
<a> <sd:attribute sd:attribute-name='href'> <sd:cell-value sd:col='_bildSpalte_path'/><sd:cell-value sd:col='_bildSpalte_name'/> </sd:attribute> <img> <sd:attribute sd:attribute-name='src'> <sd:cell-value sd:col='_bildSpalte_path'/><sd:cell-value sd:col='_bildSpalte_thumb'/> </sd:attribute> </img> </a>Dies gibt das Vorschaubild mit einem Link zum Originalbild aus.