[gelöst] Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Benutzeravatar
Levario
Beiträge: 132
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 11 Pro , MacOS und Linux Mint (Version 3.4 for Windows 64 bit )
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

[gelöst] Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von Levario »

Hallo zusammen,

ich möchte verschiedene Daten in einer Datenbank speichern. Dafür verwende ich eine MYSQL Datenbank. Der Typ für die Datei ist mediumblob mit 16MB Speicherplatz. Diese Datenbank soll PDF Dokumente, Bilder (.jpg und .png), sowie E-Mails von Outlook (.msg) speichern können.

Für Images finde ich viele Beispiele online. Für PDFs und .msg leider nicht. Gibt es hier Möglichkeiten einen Blob in einen Stream zu kopieren und diesen in eine PDF Dokument oder .msg umzuwandeln?

Schreibt gerne Links oder erklärt es mir ich finde aktuell nichts dazu.

Gruß

Levi
Zuletzt geändert von Levario am Do 1. Aug 2024, 13:10, insgesamt 2-mal geändert.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

djdhg
Beiträge: 18
Registriert: Mo 8. Apr 2013, 17:12
OS, Lazarus, FPC: Win11, Debian 12.5, Lazarus: 2.2.6, FPC: 3.2.2
CPU-Target: 64Bit

Re: Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von djdhg »


Benutzeravatar
Levario
Beiträge: 132
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 11 Pro , MacOS und Linux Mint (Version 3.4 for Windows 64 bit )
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von Levario »

djdhg hat geschrieben: Do 1. Aug 2024, 10:19 Meinst du das hier: https://www.freepascal.org/docs-html/fc ... tream.html
Ja nur wie gehe ich dann eine .pdf aus oder eine .msg? Für Images habe ich ja Komponenten in Lazarus.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

djdhg
Beiträge: 18
Registriert: Mo 8. Apr 2013, 17:12
OS, Lazarus, FPC: Win11, Debian 12.5, Lazarus: 2.2.6, FPC: 3.2.2
CPU-Target: 64Bit

Re: (offen) Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von djdhg »

Spontan würde ich das erstmal so probieren:
fs:=TFileStream.Create('c:\test.pdf', fmOpenRead);
https://www.freepascal.org/docs-html/rt ... tream.html

Lg

Benutzeravatar
Levario
Beiträge: 132
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 11 Pro , MacOS und Linux Mint (Version 3.4 for Windows 64 bit )
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: (offen) Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von Levario »

Ich habe eine Lösung gefunden für PDF Dokumente und .msg Dokumente (Outlook): Für .jpg / .png / .eml funktioniert diese Methode nicht.
procedure TForm1.Button1Click(Sender: TObject);
var
ms : TMemoryStream;
begin
// Datenbank Abfrage mit Zeos
Form1.ZQuery1.SQl.Clear;
Form1.ZQuery1.SQL.Text := 'Select * FROM test';
Form1.ZQuery1.Open;

ms:=TMemoryStream.Create; // TMemorystrem erstellen
ms.Position:=0; // Memory Stream beginnt beim Zeichen 0

TBlobField(ZQuery1.FieldByName('datei')).SaveToStream(ms); // Datenbank Abfrage in den Stream ms speichern
ms.SaveToFile('E:\test.pdf'); // Dokument Speichern
ms.free; // ms MemoryStream freigeben
OpenDocument('E:\test.pdf'); /Dokument öffnen, unter uses wird LCLIntf benötigt
end;
Bei Änderung des Dateityps nach z.B. .msg Speichert und öffnet er auch E-Mail im Outlook Format. Es kann sein das er nachfragt mit welcher Software die Datei geöffnet werden soll. OpenDocument nutzt das Programm das ihr als Favorit eingestellt habt.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

icho2099
Beiträge: 48
Registriert: Fr 21. Feb 2020, 19:17
OS, Lazarus, FPC: Win10/64
CPU-Target: 64 Bit
Wohnort: Osterholz-Scharmbeck

Re: [gelöst] Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von icho2099 »

Wenn du neben dem Blob auch den Dateinamen speicherst, in deiner Tabelle, dann geht das für jeden Dateityp, wenn du den gespeicherten Namen verwendest.

Benutzeravatar
Levario
Beiträge: 132
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 11 Pro , MacOS und Linux Mint (Version 3.4 for Windows 64 bit )
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: [gelöst] Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von Levario »

Hallo icho2099,

vielen Dank für die Info habe es gerade getestet und es funktioniert.

Es funktionieren alle Dateien, wenn man den Dateinamen des Ursprungs nutzt.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Benutzeravatar
Zvoni
Beiträge: 396
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: [gelöst] Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von Zvoni »

Levario hat geschrieben: Fr 2. Aug 2024, 21:33 Hallo icho2099,

vielen Dank für die Info habe es gerade getestet und es funktioniert.

Es funktionieren alle Dateien, wenn man den Dateinamen des Ursprungs nutzt.
Auch wenn "gelöst": Das wichtige ist die Datei-Endung (File-Extension), nicht der "Datei-Name".
Dein Fall klingt nach einem DMS, und von den DMS' die bei uns in der Firma im Einsatz waren/sind, war/ist der "ursprüngliche" Datei-NAME immer uninteressant.
Interessant war immer nur der Datei-Typ (Datei-Endung).
Bei einem Re-Export zurück aus der Datenbank raus wurde/wird nie der ursprüngliche Datei-Name vergeben, sondern nach einem bestimmten Algoritmus ein generischer Name vorgeblendet (Welcher dann in einem "SaveAs"-Dialog entsprechend dann geändert werden kann)
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
Levario
Beiträge: 132
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 11 Pro , MacOS und Linux Mint (Version 3.4 for Windows 64 bit )
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: [gelöst] Lazarus MYSQL mit ZEOS mediumblob Datenstreams für .pdf / .jpg / .png / .msg Dokumente

Beitrag von Levario »

Danke ich habe es getestet und es funktioniert mit allen Dateien, wenn man den richtigen Namen nimmt.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Antworten