![]() |
Datenbank: MySql • Version: 4.1.22 • Zugriff über: DBEXPRESS
PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
Da bei mir der folgende Code
Delphi-Quellcode:
nicht funktionierte, habe ich folgende Lösung gefunden:
SQLDataSet1.CommandText := sql;
SQLDataSet1.Active := true; ClientDataSet1.Active := true; Blob := ClientDataSet1.FieldByName ('f03') AS TBlobField; ClientDataSet1.Edit; Blob.LoadFromStream (str_PDF); ClientDataSet1.FieldByName ('f04').AsInteger := 100; ClientDataSet1.Post; ClientDataSet1.Active := false; SQLDataSet1.Active := false;
Delphi-Quellcode:
Zum wieder einlesen des Blob funktioniert folgender Code:
sql := 'insert into t01_r03' +#32
+'set f01=' +ID +',' +#32 +'f03=:f03'; sql_t01r03.Params.ParamByName('f03').LoadFromStream(str_PDF, ftBlob); if sql_t01r03.Sql.Count = 0 then sql_t01r03.SQL.Add (sql) else sql_t01r03.Sql[0] := sql; sql_t01r03.ExecSQL;
Delphi-Quellcode:
sql := 'select * from t01_r03' +#32
+'where f01=' +ID; sql_query.Sql.Clear; sql_query.SQL.Add (sql); sql_query.Open; Stream := sql_query.CreateBlobStream (sql_query.FieldByName('f03'),bmRead); MemoryStream.LoadFromStream (Stream); MemoryStream.SaveToFile (ID+'.pdf'); sql_query.Close; |
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
Und wo ist jetzt die Frage :gruebel:
In der nicht funktionierenden Lösung ist der Typ von str_PDF unklar und wie dieser gefüllt wird. |
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
Zitat:
str_PDF : TMemoryStream; Nicht wirklich eine Frage, habe schließlich eine Lösung gefunden, nachdem ich den ganzen Tag damit verbracht habe. Aber ja, warum das mit dem ClientDataSet nicht funktioniert, würde mich schon interessieren. |
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
Zitat:
|
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
Zitat:
![]() |
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
hi,
ich weiß, dass der Beitrag schon etwas älter ist, aber vielleicht bringts ja doch was nochmal nachzufragen. und zwar. Ich versuche auch gerade eine PDF Aus einem VarBinary(Max) zu lesen. Habe es genau so gemacht, wie unten beschrieben, aber wenn ich die PDF dann öffnen will, sagt der Foxit Reader: format error: not a PDF or corrupted
Delphi-Quellcode:
was mach ich hier falsch?procedure TForm.ViewPDF; var ts: TStream; ms: TMemoryStream; begin ts := TStream.Create; ts := dm.qQuery.CreateBlobStream(dm.qQuery.Fieldbyname('Datei'),bmRead); ms := TMemoryStream.Create; ms.LoadFromStream(ts); ms.SaveToFile('C:\test3.pdf'); end |
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
Du baust Dir Speicherlecks. Und IIRC musst Du zuerst "zurückspulen". Wie ist es so?
Delphi-Quellcode:
procedure TForm.ViewPDF;
var ts: TStream; ms: TMemoryStream; begin ts := dm.qQuery.CreateBlobStream(dm.qQuery.Fieldbyname('Datei'),bmRead); try ms := TMemoryStream.Create; try ts.Position := 0; ms.LoadFromStream(ts); ms.SaveToFile('C:\test3.pdf'); finally ms.Free; end; finally ts.Free; end; end |
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
hi,
danke für die schnelle Antwort, leider bewirkt das genau das selbe. |
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
Wie groß ist denn die resultierende Datei? Vielleicht ist CopyFrom besser geeignet als LoadFromStream, aber das ist nur geraten.
|
AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)
naja, hätte vielleicht erwähnen können, dass sie zu klein ist ...
also ich hab diese PDF in einem VarBinary gespeichert. Es gibt eine Funktion, die auch funktioniert, die die Datei in die Zwischenablage kopiert. Da hat sie 298KB. wenn ich das über SaveToFile versuche kommen nur 3KB dabei raus. Ich hab eben
Delphi-Quellcode:
probiert, leider ebenfalls nur 3KB
ms.CopyFrom(ts,0);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz