Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отправка картинки в базу данных

343
14 ноября 2006 года
lena_ki
282 / / 14.04.2005
Подскажите ссылку на пример, как правильно отправить в базу данных картинку, которая храниться в Image1.
Спасибо.
20K
15 ноября 2006 года
kossak
20 / / 10.11.2006
#include "jpeg.hpp"
//------------------------------------------------
if(bclsDataMdlMain->bcmpOpnPctrDlg->Execute())
{
//Это оно //////////////////////////
BmpIns = new TJPEGImage();
BmpIns->LoadFromFile(bclsDataMdlMain->bcmpOpnPctrDlg->FileName);
bclsDataMdlMain->bcmpADOPhtoTbl->Edit();
bclsDataMdlMain->bcmpADOPhtoTblFOTOB->Assign(BmpIns);
bclsDataMdlMain->bcmpADOPhtoTbl->Post();
//Это оно //////////////////////////
bclsDataMdlMain->bcmpADOPhtoTblFOTOB->SaveToFile("tmp.jpg");
TSearchRec SearchRec;
FindFirst("tmp.jpg", faAnyFile, SearchRec);
Label1->Caption = "Размер файла " + IntToStr(SearchRec.Size) + " байт";
try
{
if(SearchRec.Size!=0)
Image1->Picture->LoadFromFile("tmp.jpg");
}
catch(...)
{
Label1->Caption = "Неверный формат фото или фото отсутствует.";
}
}
547
16 ноября 2006 года
Hydra
488 / / 20.06.2006
Смотри пример CreateBlobStream.
1. Создаешь BLOB поток для поля
2. пользуешь SaveToStream

2kossak
А при чем тут файлы?
20K
16 ноября 2006 года
kossak
20 / / 10.11.2006
HYDRA
Та так балувался я. Можна и со стримом. Чё было под рукой то и показал, смыл та такой же.
343
17 ноября 2006 года
lena_ki
282 / / 14.04.2005
Может кому пригодиться при работе с postgresql...
Код ниже заносит картинки bmp, jpg в базу.
Код:
[SIZE=2]#include <memory>
#include <Jpeg.hpp>
using namespace std;
 
//для jpg сложный путь
 
//путь к файлу
AnsiString  fileName = ThumbnailList1->Thumbnails->Items[ThumbnailList1->ItemIndex]->Filename;
 auto_ptr<TMemoryStream> stream(new TMemoryStream());
 auto_ptr<Graphics::TBitmap> bitmap(new Graphics::TBitmap());
  if( ExtractFileExt(fileName) ==".jpg")
    {
       auto_ptr<TJPEGImage> jpeg (new TJPEGImage());
       jpeg->LoadFromFile(fileName);
       bitmap->Assign(jpeg.get());
    }
      else
      {
          bitmap->LoadFromFile(fileName);
      }
 bitmap->SaveToStream(stream.get());
 stream->Position = 0;
 DataModule2->ADOQueryVis->SQL->Text="UPDATE visitors SET photo=:img WHERE id =" + DataModule2->ClientDataSetVisid->AsString;
 DataModule2->ADOQueryVis->Parameters->ParamByName("img")->DataType = ftBlob;
 DataModule2->ADOQueryVis->Parameters->ParamByName("img")->LoadFromStream(stream.get(), ftBlob);
 DataModule2->ADOQueryVis->ExecSQL();
 DataModule2->ADOQueryVis->SQL->Text= "select * from visitors order by lastname";
 
[/SIZE]


Также необходимо установить последний драйвер odbs для postgresql 8.02.02.00 и в настройках поставить галочку использовать тип bytea как LO.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог