Jump to content

Updating Blob Field


dkeene

Recommended Posts

Hi, All

I have a mysql database with a table with a Blob field for storing images. If I place images in the control through DB workbench, I can view them nicely on the form. 

I am able to upload a file using TFileUpload, and when it completes, I successfully see it on a form UniImage. I would like to save this in the database.

procedure TfmTableEdit.UniFileUpload1Completed(Sender: TObject;
  AStream: TFileStream);
var
  aWinControl: TWinControl;
  blob: TStream;
begin
   
   //check if a selected image
   aWinControl:=MFetchselectedControl(self.UniContainerPanel1); //FETCHES APPROPRIATE UNIDBImage CONTROL.
   if aWinControl=nil then
   begin
      ShowMessage('No Control Selected.');
   end else

   if aWinControl.ClassName='TUniDBImage' then
   begin
      //SELECTED CONTROL is UniDBImage.
       

       Self.UniImage1.LoadFromStream(AStream); //places image on UniImage1 to confirm.
       
       blob:=Self.FDQuery1.CreateBlobStream(Self.FDQuery1.FieldByName(TUniDBImage(aWinControl).DataField), bmWrite);   //creates BLOB to Datafield.
       blob.Position:=0;
       Self.UniImage1.Picture.Graphic.SaveToStream(blob);  //Saves image from UniImage1 to Datafield. (??????)
       TUniDBImage(aWinControl).Refresh;

     

   end;

 

While I can see the image on the UniImage1 control, and blob.Position after the SaveToStream(blob) is an appropriate number, I see no change in the Selected Control, nor is the field changed.

Any suggestions?
Thank you!

Doug
 

Link to comment
Share on other sites

Anyone ;) please?

I am able to do this:

var
  blob: TStream;
begin
  
  
  Self.UniCanvas1.LoadFromFile('building_big.jpg');
  blob := Self.FDQuery1.CreateBlobStream(Self.FDQuery1.FieldByName('facilitylogo'), bmWrite);
  UniCanvas1.SaveToStream(blob, tiBMP);
  

  blob.Free;

 

 

but not this (on completion of an uploaded bitmap file.) //upload completed and verified

procedure TfmTableEdit.UniFileUpload1Completed(Sender: TObject;
  AStream: TFileStream);
var
  blob: TStream;
  aField: TField;
begin
       Self.UniCanvas1.LoadFromFile(AStream.FileName); //places in canvas
       aField:=Self.FDQuery1.FieldByName('facilitylogo');
       blob:=Self.FDQuery1.CreateBlobStream( aField , bmWrite);
       Self.UniCanvas1.SaveToStream(blob, tiBMP);
       blob.free;
 

 

Doug

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...