正文

三层传递图片2009-03-28 11:01:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/jianfeihua/41824.html

分享到:

function StreamToVariant(Stream: TStream): OleVariant;var p: Pointer;begin Result := VarArrayCreate([0, Stream.Size - 1], varByte); p := VarArrayLock(Result); try   Stream.Position := 0;   Stream.Read(p^, Stream.Size); finally   VarArrayUnlock(Result); end;end;在 中间层用\procedure VariantToStream(const Data: OleVariant;Stream:TMemoryStream);var p: Pointer;begin p := VarArrayLock(Data); try   Stream.Write(p^, VarArrayHighBound(Data,1) + 1); finally   VarArrayUnlock(Data); end;end; //=============================================================== 在D6+Access2K中测试通过:服务端方法如下:procedure TTestDM.Insert_Img(var Pic: OleVariant);var P : Pointer;   FileStream:TMemoryStream;begin  FileStream:=TMemoryStream.Create; //生成内存流  try     FileStream.Size := VarArrayHighBound(Pic, 1) - VarArrayLowBound(Pic, 1) + 1;     P := VarArrayLock(Pic);     FileStream.Position := 0;     FileStream.Write(P^, fileStream.Size); //保存到流中     VarArrayUnlock (Pic);     FileStream.Position := 0;     with ADOQuery1 do        begin           Close;           SQL.Clear;           SQL.Add(' insert into test(Img) values(:Img_Test)');           Parameters.ParamByName('Img_Test').LoadFromStream(FileStream,ftVarBytes);  //从流中写入数据库           ExecSQL;        end;  finally     FreeAndNil(FileStream);  end;end;客户端调用如下:var FileStream:TMemoryStream;   Pic: OleVariant;   P : Pointer;begin  FileStream:=TMemoryStream.Create;  Image1.Picture.Bitmap.SaveToStream(FileStream);//图片保存到内存流  try     Pic := VarArrayCreate ([0, FileStream.Size - 1], varByte);     P := VarArrayLock (Pic);     FileStream.Position := 0;     FileStream.Read (P^, FileStream.Size); //保存为 OleVariant     VarArrayUnlock (Pic);     try        SocketConnection1.AppServer.Insert_Img(Pic);  //调用服务器的方法     except        Application.MessageBox('保存出错啦! ','提示信息',MB_OK+MB_ICONINFORMATION);    end;  finally     FreeAndNil(fileStream);  end;end;  

阅读(1462) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册