代码如下: var MemSize:Integer; Buffer:PChar; MyFile:TFileStream; Stream:TBlobStream; Filename:String; begin MyFile := TFileStream.Create(str_FileName,fmOpenRead); with tbl_name do begin Stream := TBlobStream.Create(Fieldbyname(field_name)as TBlobField,bmWrite); MemSize := MyFile.Size; Inc(MemSize); Buffer := AllocMem(MemSize); try Stream.Seek(0,soFromBeginning); MyFile.Read(Buffer^,MemSize); Stream.Write(Buffer^,MemSize); finally MyFile.Free; Stream.Free; end; end;
下面的文本、图片都支持 procedure TForm_ProjectDoc.BB_ADDClick(Sender: TObject); var dName:string; fStream:TFileStream; bStream:TStream; begin if OD_selDoc.Execute then begin T_ProjectDoc.Open; dName:=ExtractFileName(OD_SelDoc.filename); try FStream:=TFileStream.Create(Od_SelDoc.filename,fmOpenRead); T_projectDoc.append; T_ProjectDoc.FieldByName('P_Id').asinteger:=CurPrjId; T_ProjectDoc.FieldByName('Doc_name').asString:=Dname; try BStream := T_ProjectDoc.CreateBlobStream(T_ProjectDocDoc_Value, bmReadWrite); try Bstream.CopyFrom(fStream,Fstream.Size); T_projectDoc.Post; finally T_ProjectDoc.Cancel; UpdateView; end; finally Bstream.Free; end; finally Fstream.Free; end; T_ProjectDoc.close; end; end;procedure TForm_ProjectDoc.BB_ViewClick(Sender: TObject); var dname1,dName:string; fStream:TFileStream; bStream:TStream; begin if LB_Doc.ItemIndex=-1 then exit; T_ProjectdocRead.open; DName1:=LB_Doc.Items[LB_Doc.ItemIndex]; if T_ProjectDocRead.Locate('p_id;Doc_Name',vararrayof([CurPrjId,Dname1]),[]) then begin DName:=extractFilepath(Application.exename)+'temp\'+LB_Doc.Items[LB_Doc.ItemIndex]; if FileExists(DName) then deleteFile(DName); try FStream:=TFileStream.Create(DName,fmCreate); try bStream:=T_ProjectDocread.CreateBlobStream(T_ProjectDocReadDoc_Value, bmRead); Fstream.copyfrom(BStream,Bstream.size); finally Bstream.Free; end; finally Fstream.Free; end; if TempDocList.IndexOf(Dname1)=-1 then TempDocList.Add(Dname1); if shellExecute(handle,'open',pchar(Dname),nil,nil,sw_shownormal)=SE_ERR_NOASSOC then showmessage('该类型文件没有指定关联程序,不能打开!'); end; T_ProjectdocRead.close; end;
Table1.Close; Table1.TableName := 'tablename'; Table1.Open; Table1.Append; (Table1.FieldByName('text') as TBlobField).LoadFromFile(ReadFullName); Table1.Post;
var
MemSize:Integer;
Buffer:PChar;
MyFile:TFileStream;
Stream:TBlobStream;
Filename:String;
begin
MyFile := TFileStream.Create(str_FileName,fmOpenRead);
with tbl_name do
begin
Stream := TBlobStream.Create(Fieldbyname(field_name)as TBlobField,bmWrite);
MemSize := MyFile.Size;
Inc(MemSize);
Buffer := AllocMem(MemSize);
try
Stream.Seek(0,soFromBeginning);
MyFile.Read(Buffer^,MemSize);
Stream.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
end;
procedure TForm_ProjectDoc.BB_ADDClick(Sender: TObject);
var
dName:string;
fStream:TFileStream;
bStream:TStream;
begin
if OD_selDoc.Execute then
begin
T_ProjectDoc.Open;
dName:=ExtractFileName(OD_SelDoc.filename);
try
FStream:=TFileStream.Create(Od_SelDoc.filename,fmOpenRead);
T_projectDoc.append;
T_ProjectDoc.FieldByName('P_Id').asinteger:=CurPrjId;
T_ProjectDoc.FieldByName('Doc_name').asString:=Dname;
try
BStream := T_ProjectDoc.CreateBlobStream(T_ProjectDocDoc_Value, bmReadWrite);
try
Bstream.CopyFrom(fStream,Fstream.Size);
T_projectDoc.Post;
finally
T_ProjectDoc.Cancel;
UpdateView;
end;
finally
Bstream.Free;
end;
finally
Fstream.Free;
end;
T_ProjectDoc.close;
end;
end;procedure TForm_ProjectDoc.BB_ViewClick(Sender: TObject);
var
dname1,dName:string;
fStream:TFileStream;
bStream:TStream;
begin
if LB_Doc.ItemIndex=-1 then
exit;
T_ProjectdocRead.open;
DName1:=LB_Doc.Items[LB_Doc.ItemIndex];
if T_ProjectDocRead.Locate('p_id;Doc_Name',vararrayof([CurPrjId,Dname1]),[]) then
begin
DName:=extractFilepath(Application.exename)+'temp\'+LB_Doc.Items[LB_Doc.ItemIndex];
if FileExists(DName) then
deleteFile(DName);
try
FStream:=TFileStream.Create(DName,fmCreate);
try
bStream:=T_ProjectDocread.CreateBlobStream(T_ProjectDocReadDoc_Value, bmRead);
Fstream.copyfrom(BStream,Bstream.size);
finally
Bstream.Free;
end;
finally
Fstream.Free;
end;
if TempDocList.IndexOf(Dname1)=-1 then
TempDocList.Add(Dname1);
if shellExecute(handle,'open',pchar(Dname),nil,nil,sw_shownormal)=SE_ERR_NOASSOC then
showmessage('该类型文件没有指定关联程序,不能打开!');
end;
T_ProjectdocRead.close;
end;
Table1.Open; Table1.Append;
(Table1.FieldByName('text') as TBlobField).LoadFromFile(ReadFullName);
Table1.Post;