Announcement

Collapse
No announcement yet.

Dateien in MySQL, anstelle im BlobFeld jetzt Pfadangabe speichern und zugreifen ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dateien in MySQL, anstelle im BlobFeld jetzt Pfadangabe speichern und zugreifen ?

    Hallo Leute,
    nun habe ich mal wieder ein kleines Problem, wo mir wohl der Zusammenhang nicht klar wird, wie es funktioniert.
    In meiner DB MySQL speichere und lese ich über folgenden Codeschnipsel Dateien im Binärformat in ein BlobFeld:

    var f: TBlobField;
    F:=MyVertraege.FieldByName('VertPDF') as TBlobField;
    F.LoadFromFile(VertDat); // Auslesen VertDat: Variable für den Dateinamen
    F.SaveTofile(VertDat); // Speichern VertDat: Variable für den Dateinamen
    Nun möchte ich den Code so ändern, das nur noch der Dateipfad+Dateiname auf dem MySQL Server in der Datenbank gespeichert wird.
    Wie müsste ich den Code ändern, das dies möglich wird zum Schreiben und lesen ?
    Hintergrund ist der, das ich eine Fortschrittsanzeige integrieren möchte, damit der Benutzer auch weiss, das es bei grossen Dateien (> 2Gbyte)
    länger dauern wird.

    Danke für Eure Hilfe.

    Gerhard

  • #2
    Dann musst du VertDat in ein Textfeld in der DB speichern.
    Beim Zugriff dann den Pfad aus dem Textfeld lesen, auf die Datei zugreifen, und dann etwas damit machen (anzeigen?)

    Handelst dir dafür den (in meinen Augen schwerwiegenden) Nachteil ein, dass wenn jemand nur irgendetwas an dem Pfad oder Name der Datei ändert, du sie nicht mehr über die DB ausliefern kannst.

    Hintergrund ist der, das ich eine Fortschrittsanzeige integrieren möchte, damit der Benutzer auch weiss, das es bei grossen Dateien (> 2Gbyte)
    länger dauern wird.
    Das verstehe ich in dem Zusammenhang nicht. Du lagerst die Dateien ins Dateisystem aus, um eine Fortschrittsanzeige zu implementieren?
    Christian

    Comment


    • #3
      Hallo,
      Originally posted by Christian Marquardt View Post
      ...Handelst dir dafür den (in meinen Augen schwerwiegenden) Nachteil ein, dass wenn jemand nur irgendetwas an dem Pfad oder Name der Datei ändert, du sie nicht mehr über die DB ausliefern kannst.
      Ebenso nicht zu vernachlässigen ist die Tatsache, dass dann jeder der in der DB eine Datei speichern oder lesen will, auch Zugriff auf das Dateisystem des Datenbankservers benötigt, was wiederum als Sicherheitsproblem einzustufen wäre, bzw. einen erhöhten Administrationsaufwand nach sich zieht.

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Für speichern in der DB oder außerhalb gibt es jeweils vor und Nachteile.
        HTMl-Dokumentation mit vernetzten JS, CSS und Bilddateien hat das Externe Speichern auch seine vorteile

        Comment


        • #5
          Erstmal Danke für euro Infos.
          Christian..
          Eine Fortschrittsanzeige müsste dann so funktionieren, das ich die Dateigröße vorher abfrage und mit den Ergebnissen die Anzeige aktualisieren kann.
          So mache ich das auch, wenn ich Dateien innerhalb eines lokalen Sytems kopiere und es funktioniert ganz gut.
          Da mittlerweile viele Dateien in der Datenbank in Blobfeldern liegen und bei gleichzeitigen up- und download die DB doch sehr langsam geworden ist, habe ich im Internet an verschiedenen Stellen gelesen, das bei der Auslagerung in die Verzeichnisstruktur die Übertragung schneller sein soll.

          Das mit den Zugriffsrechten dürfte nicht so schwerwiegend sein, da niemand ausser mir darauf Zugriff hat und Veränderungen vornehmen kann.

          Ich möchte erstmal ausprobieren, ob die Übertragung dadurch wirklich schneller wird, wie im Internet beschrieben.

          Gruss Gerhard

          Comment


          • #6
            Hallo Leute,
            das Problem habe ich gelöst, indem ich einfach einen Indy ftp client in die Anwendung integriert habe. Dann ist es schneller und habe eine Fortschrittsanzeige und die Dateien liegen schön sauber in einem Verzeichnis auf dem Server.
            Der Nachteil ist nur, das in der Firewall mehr Ports offen sein müssen, damit die Dateiübertragung via FTP auch von mehreren USern gleichzeitig gestartet werden kann.

            Gruss Gerhard

            Comment

            Working...
            X