通过三层结构存取文件出了些问题,大家帮忙看看!

cowboy1999 2003-10-16 05:29:05
通过三层存取文件,存取都能够实现,但是存入后再取出来,文件就和源文件不一样了,比如一个10k的jpeg文件,经过一次存取后,就只有8.9k大小,而且图片打不开,可能是格式受到了破坏。请大家帮忙看看。
部分代码如下:

通过ClientDataset存:
aMemoryStream := TMemoryStream.Create;
aMemoryStream.LoadFromFile(OpenDialog1.FileName);
aMemoryStream.Seek(0,soFromBeginning);
strSql := 'INSERT INTO TEST(MYFILENAME, MYFILE, MYEXT) VALUES (:MYFILEname, :MYFILE, :MYEXT)';
SocketConnection1.Connected := false;
SocketConnection1.Connected := true;
ClientDataSet1.CommandText := strSql;
//ClientDataSet1.Params.CreateParam(ftString,'MYFILENAME', ptInput);
//ClientDataSet1.Params.CreateParam(ftBlob,'MYFILE', ptInput);
//ClientDataSet1.Params.CreateParam(ftString,'MYEXT', ptInput);
ClientDataSet1.Params.ParamByName('MYFILENAME').Value := OpenDialog1.FileName;
ClientDataSet1.Params.ParamByName('MYFILE').LoadFromStream(aMemoryStream,ftBlob);
ClientDataSet1.Params.ParamByName('MYEXT').Value := '.JPG';
ClientDataSet1.Execute;
aMemoryStream.Free;


通过ClientDataSet取:
strSql := 'Select * from TEST';
SocketConnection1.Connected := false;
SocketConnection1.Connected := true;
ClientDataSet1.Params.Clear;
ClientDataSet1.CommandText := strSql;
ClientDataSet1.Open;
ClientDataSet1.FetchBlobs;
aMemoryStream := TMemoryStream.Create;
//ClientDataSet1.Edit;
Caption := ClientDataSet1.FieldByName('MYFILENAME').AsString;
//aStream := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('MYFILE'),bmReadWrite);
TBlobField(ClientDataSet1.FieldByName('MYFILE')).SaveToStream(aMemoryStream);
//ClientDataSet1.Post;
aMemoryStream.Position := 0;
aMemoryStream.SaveToFile('c:\test.jpg');

SocketConnection1.Connected := false;
aMemoryStream.Free;


机器环境为Win2k Prof. + SP3 + Delphi6 + Oracle 817i
...全文
43 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
huojiehai 2003-10-17
  • 打赏
  • 举报
回复
你写得也太复杂了吧,如果应用服务器端的是BDE的话,要把blob size设大

你用以下方法试试
http://haitian.myrice.com/ByteDataTrans.txt
到服务器端再提交,用如下方法
http://haitian.myrice.com/OracleBlob.htm

cowboy1999 2003-10-16
  • 打赏
  • 举报
回复
自己先顶一下,大家帮忙看看!

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧