[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]
Отправка картинки в базу данных
Спасибо.
//------------------------------------------------
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 = "Неверный формат фото или фото отсутствует.";
}
}
1. Создаешь BLOB поток для поля
2. пользуешь SaveToStream
2kossak
А при чем тут файлы?
Та так балувался я. Можна и со стримом. Чё было под рукой то и показал, смыл та такой же.
Код ниже заносит картинки bmp, jpg в базу.
Код:
Также необходимо установить последний драйвер odbs для postgresql 8.02.02.00 и в настройках поставить галочку использовать тип bytea как LO.