我的问题是这样的,俩个sql server 服务器不在一个局域网内,但是都可以连到internet上,并且俩台机器都装了IIS,所以想通过serverxmlhttp传输数据。我从一个 sql数据库中取数(有条件的),生成xml文件,传到令一台sql server的机器上,通过asp程序把xml文件导入数据库,这些任务已经完成(没考虑二进制数据类型)。现在的数据表里有IMAGE数据类型,不知道该如何处理,请大家给点建议。不知道我的问题有没有描述清除。还希望大家支持我。

解决方案 »

  1.   

    将Image字段的内容转为2进制存入XMl文件传不可以?
      

  2.   

    将Image数据转为String发送
    接收后还原保存
      

  3.   

    to ssq237712:
    将Image字段的内容转为2进制存入XMl文件传不可以?
    //
    可以,传输已经完成,现在的问题是,xml数据导入sql server的时候,二进制数据就变了我又不想把IMAGE类型的字段保存成临时文件传输不知道怎么解决xml内保存的二进制到数据库
      

  4.   

    源码太长了,有delphi的,还有asp的本人只想征求下意见,如果有人做过类似的东东,给店建议就好了
      

  5.   

    将Image字段的内容转为2进制存入XMl文件传输后,不能再从XML中把它恢复成Image在保存么?
      

  6.   

    to 楼上:
    将Image字段的内容转为2进制存入XMl文件传输后,不能再从XML中把它恢复成Image在保存么?
    //
    怎么恢复呀?
    如何保存?真的没有解决办法嘛?
      

  7.   

    你不是已经把IMage字段转为2进制传过去了么,那你在把那部分二进制恢复成Image阿
      

  8.   

    刚刚找了一些资料,再xml中传输大字段,要使用base64编码
    delphi 7 中有两个控件  
    TIdEncoderMIME; 可以对Image字段就行base64编码,然后将转换得到的字符串保存到xml中
    TIdDecoderMIME;  这个可以用来恢复。编码的例子如下,解码么,楼主自己看一下吧unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdCoder3To4, IdBaseComponent, IdCoder, IdCoderMIME;type
      TForm1 = class(TForm)
        Button1 : TButton;
        IdEncoderMIME1: TIdEncoderMIME;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyFileStream  :TFileStream;
      Buffer        :String;
    begin
      try
        MyFileStream:=TFileStream.Create('c:\bar.gif',fmOpenRead);
        SetLength(buffer, MyFileStream.Size);
        MyFileStream.Read(Buffer[1], MyFileStream.Size);
        Buffer:=IdEncoderMIME1.EncodeString(Buffer);  //得到编码后的字符串
        memo1.Lines.Add(Buffer);
      finally
        MyFileStream.Free;
      end;
    end;
    end.
      

  9.   

    Base64编码解码就可以了。
    先将Image内容Base64编码为String,传过来再解码存入数据库。无论是java还是Delphi都很好实现的
      

  10.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdCoder, IdCoder3to4, IdCoderMIME, IdBaseComponent;type
      TForm1 = class(TForm)
        IdEncoderMIME1: TIdEncoderMIME;
        IdDecoderMIME1: TIdDecoderMIME;
        Button1: TButton;
        Button2: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      Buffer        :String;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      MyFileStream  :TFileStream;
    begin
      try
        MyFileStream:=TFileStream.Create('f:\from.jpg',fmOpenRead);
        SetLength(buffer, MyFileStream.Size);
        MyFileStream.Read(Buffer[1], MyFileStream.Size);
        Buffer:=IdEncoderMIME1.EncodeString(Buffer);  //µÃµ½±àÂëºóµÄ×Ö·û´®
        memo1.Lines.Add(Buffer);
      finally
        MyFileStream.Free;
      end;end;procedure TForm1.Button2Click(Sender: TObject);
    var
      MyFileStream  :TMemoryStream;
    begin
      try
        Buffer := IdDecoderMIME1.DecodeString(Buffer);
        MyFileStream := TMemoryStream.Create;
        MyFileStream.Write(Buffer[1], length(Buffer));
        MyFileStream.SaveToFile('f:\to.jpg');
      finally
        MyFileStream.Free;
      end;end;end.