Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Сохранение и чтение файлов в BLOB-полях

Delphi , Базы данных , BLOB поля

Сохранение и чтение файлов в BLOB-полях


// Сохраняем
procedure TForm1.Button1Click(Sender: TObject); 
var 
  blob: TBlobStream; 
begin 
  blob := yourDataset.CreateBlobStream(yourDataset.FieldByName('YOUR_BLOB'), bmWrite); 
  try 
    blob.Seek(0, soFromBeginning); 
    fs := TFileStream.Create('c:\your_name.doc', fmOpenRead or 
      fmShareDenyWrite); 
    try 
      blob.CopyFrom(fs, fs.Size) 
    finally 
      fs.Free 
    end; 
  finally 
    blob.Free 
  end; 
end;

// Загружаем
procedure TForm1.Button1Click(Sender: TObject); 
var 
  blob: TBlobStream; 
begin 
  blob := yourDataset.CreateBlobStream(yourDataset.FieldByName('YOUR_BLOB'), bmRead); 
  try 
    blob.Seek(0, soFromBeginning); 

    with TFileStream.Create('c:\your_name.doc', fmCreate) do 
      try 
        CopyFrom(blob, blob.Size) 
      finally 
        Free 
      end; 
  finally 
    blob.Free 
  end; 
end;

Перевод контента на русский язык:

Код используется для сохранения и загрузки файлов из полей BLOB (Binary Large OBject) в приложении Delphi, использующем компоненты TDataSet и TBlobStream.

Сохранение файла

В этом разделе кода мы сохраняем файл, хранящийся в поле YOUR_IBM_BLOB dataset, в локальный файл с именем 'c:\your_name.doc'.

  1. Мы создаем объект TBlobStream из поля BLOB, используя yourDataset.CreateBlobStream(yourDataset.FieldByName('YOUR_IBM_BLOB'), bmWrite). Параметр bmWrite указывает, что мы хотим записать в BLOB.
  2. Мы перемещаемся к началу потока blob и открываем локальный файл с именем 'c:\your_name.doc' для чтения.
  3. Мы копируем содержимое из потока blob в локальный файл, используя blob.CopyFrom(fs, fs.Size).
  4. Наконец, мы освобождаем локальный файловый поток и поток blob, когда они больше не нужны.

Загрузка файла

В этом разделе кода мы загружаем файл из файла 'c:\your_name.doc' в поле YOUR_IBM_BLOB dataset, используя компоненты TFileStream и TBlobStream.

  1. Мы создаем объект TBlobStream из поля BLOB, используя yourDataset.CreateBlobStream(yourDataset.FieldByName('YOUR_IBM_BLOB'), bmRead). Параметр bmRead указывает, что мы хотим прочитать из BLOB.
  2. Мы перемещаемся к началу потока blob и открываем локальный файл с именем 'c:\your_name.doc' для создания.
  3. Мы копируем содержимое из локального файла в поток blob, используя blob.CopyFrom(fs, fs.Size).
  4. Наконец, мы освобождаем локальный файловый поток и поток blob, когда они больше не нужны.

Альтернативное решение:

Вместо ручного открытия файловых потоков и копирования данных между ними вы можете использовать метод SaveToStream компоненты TField для сохранения поля BLOB в файле, а метод LoadFromStream для загрузки из файла. Вот пример, как можно модифицировать ваш код для этого:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Сохранение в файл
  yourDataset.FieldByName('YOUR_IBM_BLOB').SaveToStream(TFileStream.Create('c:\your_name.doc', fmCreate));

  // Загрузка из файла
  TField(yourDataset).LoadFromStream(TFileStream.Create('c:\your_name.doc', fmOpenRead));
end;

Эта APPROACH более проста и легче для чтения, так как она обертывает операции ввода-вывода файлов в методы компоненты TField.

Сохранение и чтение файлов в BLOB-полях Delphi-приложения выполняется с помощью класса TBlobStream, который обеспечивает доступ к файлам, хранящимся в БД в виде больших двоичных объектов (BLOB).


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: BLOB поля ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-13 08:06:08/0.0034151077270508/0