• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bilder über DB verknüpfen!

bodo92

Aktives Mitglied
Hallo, ich denke das passt hier am besten rein.
Ich möchte zu den Einsätzen die Bilder per Datenbank verknüpfen, hier stellte ich mir die Frage wie ich die Bilddateien am besten ablege, hierzu würde ich gerne eure Meinung hören.

Vorgestellt hatte ich mir das folgendermaßen:
Die Bilder werden unter /public/images/einsaetze/ abgelegt und der Dateiname besteht aus einem Hash (z.B. den Unix-Timestamp und die Filesize in SHA256 oder so damit ein eindeutiger Hash entsteht.)
Dann würde ich einfach in einer Tabelle die Bilder den Einsätzen zuweisen.
Code:
| id | einsatz_id | bild                                                                 |
| 1  | 2          | 69eb3806494df51fd75e5ca1411291248c165b075a519b67b7b1bcb9712ad130.jpg |

Alternativ hatte ich mir folgendes gedacht:
Die Bilder unter /public/images/einsaetze/[HASH]/ ablegen und hier das Verzeichnis als Hash dem Einsatz zuweisen und das Verzeichnis mittels PHP auf Bilder auslesen..


Bitte euch mir da ein paar Tipps zu geben was mehr sinn macht ggf. auch gerne ein ganz anderes Design.
 
Kannst das Bild alternativ auch in der Datenbank ablegen (Stichwort: BLOB), aber davon halte ich persönlich jetzt nicht soviel. Ich arbeite gerade zufällig an einem DateiSystem das es ermöglicht Dateien flexibel via MySQL, NoSQL oder anders zu lagern. Bei interesse kann ich dir ja einen Einblick geben.
 
Davon habe ich auch schon gehört aber ich finde das auch nicht besonders schön.

Was meinst du mit Lagern? Ähnlich wie bei mir das man die Referenz in der DB ablegt?
 
Mit Lagern, meine ich auch "speichern". Ob diese nun in einer MySQL Datenbank abgelegt wird oder halt NoSQL oder per einfach in einem Ordner. Ob ich dazu Referenztabellen nutze weiß ich noch nicht.

Das ganze sieht dann ungefähr so aus:

  • FileStorage
    • Exception
    • Factory
      • AbstractStorageFactory
      • DoctrineStorageFactory
      • FileSystemStorageFactory
      • NoSqlStorageFactory
    • Storage
      • AbstractStorage.php
      • DoctrineStorage.php
      • FileSystemStorage.php
      • NoSqlStorage.php
  • Storage.php
FileSystemStorageFactory.php
PHP:
class FileSystemStorageFactory extends AbstractStorageFactory {

    /**
     * @var string $basePath    Der Pfad wo die Datei gelagert werden soll
     */
    private $basePath;

    /**
     * @param string $basePath
     */
    public function __construct($basePath){

        $this->basePath = $basePath;
    }

    /**
     * Gibt ein Objekt der Klasse Storage zurück
     *
     * @return Storage
     */
    public function getStorage(){

        $storage = new FileSystemStorage();
        $storage->setBasePath($this->basePath);

        return new Storage($storage);
    }
}

Storage.php

PHP:
class Storage {

    /**
     * @var AbstractStorage $storage
     */
    private $storage;

    /**
     * @param AbstractStorage $storage
     */
    public function __construct(AbstractStorage $storage) {
        $this->storage = $storage;
    }

    /**
     * Gibt den aktuellen Storage zurück
     *
     * @return AbstractStorage
     */
    public function getStorage() {
        return $this->storage;
    }
}

usw.


Eben erst angefangen, aber vllt wird klar worrauf ich hinnaus möchte.
 
Zurück
Oben