2009/08/26

將不特定檔案存入取出資料庫內

來源:請問如何將不特定檔案存入取出資料庫內
事實上方法極為簡單, 範例如下
(1)載入檔案存入note欄位內(note是一blob)

TFileStream *fs;
TStream *s;

if( OpenDialog1->Execute() )
{
s=Table1->CreateBlobStream( Table1->FieldByName("Note"), bmWrite );
s->Seek( 0, 0 );
fs=new TFileStream( OpenDialog1->FileName, fmOpenRead );
s->CopyFrom( fs, fs->Size );
fs->Free();
s->Free();
}

(2)自note內取出資料存成檔案
TFileStream *fs;
TStream *s;

if( SaveDialog1->Execute() )
{
s=Table1->CreateBlobStream( Table1->FieldByName("Note"), bmRead );
s->Position=0;
fs=new TFileStream( SaveDialog1->FileName, fmCreate );
fs->Seek(0, 0);
fs->CopyFrom( s, s->Size );
fs->Free();
s->Free();

夠簡單吧! 不過就是用 FileStream & Stream 在那兒轉來轉去而已
但它沒有原始檔名資料,建議你另加一欄位存放原始檔名
如果你不想存檔可以將Stream傳至您的其他元件直接觀看,例如pdf, bmp, jpg
tiff, word, excel..........等其他方式處理,反正BLOB是完完整整的將檔案存起來也不管你的資料格式是啥隨便你玩,只是請注意一下容量大小,若你是經由端
伺服器那麼最好有經過特別處理或不純放太大檔案

沒有留言:

張貼留言