三层结构下,如何保存二进制大型数据 直接用TClientDataset与服务器连接,保存就可以. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种方法我测试过: TClientDataset端用参数方式把二进制数据写入,有时要少1字节,如保存20000字节,实际只保存19999字节,数据由 chr(1)-chr(255)循环产生 刚刚解决这个问题.做的项目是一个办公自动化系统.在公文传输中,比如发通知的时候可以带n多的附件,附件可能是任何类型的东东儿.方法步骤如下: 1.将应用程序服务器端对应datasetprovider的options的fetchblobondemand选项设为true,因为false情况下,客户端的clientdataset是不取blob数据的.或者在 false情况下用clientdataset的fetchblob方法取得数据库中的数据.2.源程序如下(win2000/delphi/ocracle)procedure writetoblobfield;vartfStream:TFileStream;tbStream:TBlobStream;nbufsize:integer;pbuf:PChar;beginWith clientdataset1 dobeginif Active = false thenActive := true;Append;trytfStream:=TFileStream.Create(FilePath,fmOpenRead);nbufsize:=tfStream.Size +1;pbuf:=AllocMem(nbufsize);tfStream.Read(pbuf^,nbufsize);tbStream:=TBlobStream.Create((fieldbyname('TestImage') as TBlobField),bmWrite);tbStream.Seek(0,SoFromBeginning);tbStream.Write(pbuf^,nbufsize);finallytfStream.Free ;tbStream.Free ;post;FreeMem(pbuf,nbufsize);Active:=False;end;end;end;procedure savetoclient;varfilebody:tstream;tempfile:tmemostream;begintryfilebody:=clientdataset.createblobstream(Tblobfield,bmread);filebody.position:=0;tempfile:=tmemostream.create;tempfile.loadfromstream(filebody);tempfile.savetostream(文件名);finallytempfile.free;filebody.frdd;end;end;end; 利用MOVE进行内存拷贝无效的问题 请教自定义程序运行的权限的问题 高难题,如何改变 EXE 文件的建立时间? 请问哪里有数据结构的视频下载??? 当窗口最小化,最大化时我们会收到什么消息?? 如何使edit2获取焦点 谁能给我一份C/S数据库存储的例子????请大家帮我找找,找了很久也没找着,谢谢 关闭子窗口的问题。在线 问个最菜的问题:如何安装控件? 问题简简单,快快来领分。 100分,急向高手求教!关于Delphi的FTP编程问题 请教:怎样监测到系统是否有键盘或鼠标事件
TClientDataset端用参数方式把二进制数据写入,有时要少1字节,如保存20000字节,实际只保存19999字节,数据由 chr(1)-chr(255)循环产生
1.将应用程序服务器端对应datasetprovider的options的fetchblobondemand选项设为true,因为false情况下,客户端的clientdataset是不取blob数据的.或者在 false情况下用clientdataset的fetchblob方法取得数据库中的数据.
2.源程序如下(win2000/delphi/ocracle)
procedure writetoblobfield;
var
tfStream:TFileStream;
tbStream:TBlobStream;
nbufsize:integer;
pbuf:PChar;
begin
With clientdataset1 do
begin
if Active = false then
Active := true;
Append;
try
tfStream:=TFileStream.Create(FilePath,fmOpenRead);
nbufsize:=tfStream.Size +1;
pbuf:=AllocMem(nbufsize);
tfStream.Read(pbuf^,nbufsize);
tbStream:=TBlobStream.Create((fieldbyname('TestImage') as TBlobField),bmWrite);
tbStream.Seek(0,SoFromBeginning);
tbStream.Write(pbuf^,nbufsize);
finally
tfStream.Free ;
tbStream.Free ;
post;
FreeMem(pbuf,nbufsize);
Active:=False;
end;
end;
end;procedure savetoclient;
var
filebody:tstream;
tempfile:tmemostream;
begin
try
filebody:=clientdataset.createblobstream(Tblobfield,bmread);
filebody.position:=0;
tempfile:=tmemostream.create;
tempfile.loadfromstream(filebody);
tempfile.savetostream(文件名);
finally
tempfile.free;
filebody.frdd;
end;
end;
end;