Bilder und Dateien verwalten - mit Upload auf den eigenen Server

Das Angebot von server-daten ist spezialisiert auf Datenbank-Dienstleistungen. Dementsprechend werden Server paarweise verwendet, der Datenbank-Server ist nur für die Datenbanken zuständig und nutzt RAID-V, der Webserver konzentriert sich auf die Auslieferung der internen Masken und die Erzeugung der Ausgabeseiten. Für Dateien und Bilder, die nicht in einer Datenbank, sondern auf gewöhnlichen Festplatten gespeichert werden, wird deshalb kein Speicherplatz bereitgestellt.

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.

Die FTP-Tabelle mit den Daten für den File-Transfer

Eine FTP-Tabelle kann pro Datenbank nur einmal erzeugt werden und stellt pro Zeile die Daten für einen FTP-Account des Kunden zur Verfügung. Für die Erstellung ist es nur notwendig, im Menü 3: Tabellen einen Tabellennamen festzulegen, den Sondertyp FTP zu wählen und anschließend zu speichern. Die Spalten werden automatisch passend belegt und können vom Kunden nicht geändert 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-Server: Hier wird die Basisadresse in der Form
    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.
  • Pfad ab FTP-Anmeldung: In Abhängigkeit davon, wie der FTP-Account gestaltet ist, kann das von außen her per HTTP erreichbare Stammverzeichnis dem Stammverzeichnis des FTP-Accounts oder eines tieferliegenden Verzeichnisses entsprechen. Bei einem tieferliegenden Verzeichnis muß dieses hier eingetragen 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.
  • Url-Basis: Die HTTP-Adresse, unter welcher später die hochgeladenen Dateien und Bilder aufrufbar sind.

    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.
  • FTP-Nutzername: Der Nutzername, welcher dem verwendeten FTP-Account zugeordnet ist.
  • FTP-Passwort: Das Passwort zum festgelegten Nutzernamen.
Nach dem Speichern werden Nutzername und Passwort in interne Felder verschoben und sind beim nächsten Leseaufruf nicht mehr sichtbar. Sie können allerdings weiterhin über die Eingabe neu gesetzt werden.

Optionen für den Datentyp 'file' bei Tabellenspalten

Bei der Verwendung des Datentyps 'file' können die folgenden Optionen genutzt werden:
  • Dateiname    :
    Ordner - Typ :
    Ordnername :

    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.

  • Mime-Typ / maximale Größe: Mit dem Mime-Typ wird festgelegt, welcher Typ von Dateien hochgeladen werden kann. Derzeit umfaßt die Auswahl nur die Typen 'all', 'images' (.jpg, .gif usw.), 'text' (.html, .txt) und 'application'. Falls weitere Typen benötigt werden, senden Sie einfach eine Mail an server-daten.

    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.

  • Bildhöhe in Pixel, Bildbreite in Pixel, Bildhöhe in Prozent, Bildbreite in Prozent:

    Für diese vier zusammenhängenden Werte gilt:

    • Sie beeinflussen nur Bilder, also Dateien mit den Endungen 'jpg', 'jpeg', 'gif', 'png'.
    • Einzutragen sind immer Ganzzahlen, also 100, -200 oder 53. Kürzel wie 'px' oder '%' werden nicht hinzugefügt.
    • Ist kein Wert gesetzt, so wird das Bild in der Originalgröße per FTP transferiert und so gespeichert.
    • Größenangaben können entweder für die beiden Pixel- oder für die beiden Prozentangaben gemacht werden. Existieren sowohl Pixel- als auch Prozentangaben, so werden die Prozentangaben ignoriert.
    • Wird nur ein Wert (Breite oder Höhe) angegeben, so wird der andere Wert proportional zum ersten Wert errechnet (Pixel) oder es wird derselbe Prozentwert verwendet. Ein einzelner Wert verzerrt das Bild nicht.
    • Werden beide Pixel-Werte positiv angegeben, so dürfte dies in der Regel zu Verzerrungen führen, falls die Ausgangsgrößen nicht bekannt sind. Wird nur ein Pixel-Wert angegeben, so richtet sich der andere Wert nach den Daten des Originalbildes und schwankt folglich.
    • Eine Kombination aus positiver Pixel-Höhe und negativer Pixel-Breite wird in zwei Schritten interpretiert:

      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: -100
      Das 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.

    • Zwei negative Pixel-Werte werden als Abschneiden in beiden Richtungen interpretiert.

      Beispiel:

      Bildhöhe in Pixel: -50
      Bildbreite in Pixel: -100
      Vom Bild wird nur das Rechteck aus der Bildmitte mit einer Breite von 100 und einer Höhe von 50 Pixeln gespeichert.
    • Dieselben Regeln gelten für die analogen Thumbnail-Optionen. Als Ausgangspunkt wird das Bild nach der Bearbeitung anhand der ersten vier Werte verwendet. Wenn das Originalbild mit negativen Werten zugeschnitten wurde, so orientiert sich auch das Thumbnail am zugeschnittenen Bild.

      Beispiel:

      Bildbreite in Pixel: 100
      Thumb-Breite in Prozent: 50
      Dies komprimiert das hochgeladene Bild unter Beibehaltung der Proportionen auf eine Breite von 100 Pixeln und erstellt ein Vorschaubild mit der Breite von 50 Pixeln.
  • Thumbnail-Optionen:

    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.

  • Innerhalb von Ausgabeseiten wird der Dateiname mit einem möglichen Zufallswert über die Tabellenspalte ausgegeben. Der tatsächlich verwendete Dateiname zum Speichern steht in der zusätzlichen Spalte '_' + Tabellenname + '_name' bereit. Der Pfad wird über '_', gefolgt vom Namen der Tabellenspalte sowie '_path' ausgegeben. Der Name der Thumbnail-Datei ist immer gleich dem Namen der Hauptdatei, wobei vor dem Punkt '_s' eingefügt wird. Dieser Namen wird über die zusätzliche Spalte '_' + Tabellenspalte + '_thumb' bereitgestellt.

    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.


Kontaktformular:

Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2018 Jürgen Auer, Berlin.