我的问题是这样的,俩个sql server 服务器不在一个局域网内,但是都可以连到internet上,并且俩台机器都装了IIS,所以想通过serverxmlhttp传输数据。我从一个 sql数据库中取数(有条件的),生成xml文件,传到令一台sql server的机器上,通过asp程序把xml文件导入数据库,这些任务已经完成(没考虑二进制数据类型)。现在的数据表里有IMAGE数据类型,不知道该如何处理,请大家给点建议。不知道我的问题有没有描述清除。还希望大家支持我。
调试欢乐多
接收后还原保存
将Image字段的内容转为2进制存入XMl文件传不可以?
//
可以,传输已经完成,现在的问题是,xml数据导入sql server的时候,二进制数据就变了我又不想把IMAGE类型的字段保存成临时文件传输不知道怎么解决xml内保存的二进制到数据库
将Image字段的内容转为2进制存入XMl文件传输后,不能再从XML中把它恢复成Image在保存么?
//
怎么恢复呀?
如何保存?真的没有解决办法嘛?
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.
先将Image内容Base64编码为String,传过来再解码存入数据库。无论是java还是Delphi都很好实现的
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.