我的send函数有问题。我的程序在Xe8中正确运行,但升级到Xe10后,我遇到了一个问题:加密?
我创建了一个简单的项目数据,用juste这样的窃听函数
procedure TServerMethods1.test3;
VAR
a : string;
begin
a := LoadFileToStr('C:\demo\Bitmaps\Mazak_Matrix.JPG');
GetInvocationMetadata.ResponseContentType := 'image/jpeg';
GetInvocationMetadata.ResponseCode := 200;
GetInvocationMetadata().ResponseContent := a;
GetInvocationMetaData.CloseSession := True;
end;
功能LoadFileToStr
function LoadFileToStr(const FileName: string): AnsiString;
var
FileStream : TFileStream;
begin
FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
if FileStream.Size>0 then
begin
SetLength(Result, FileStream.Size);
FileStream.Read(Pointer(Result)^, FileStream.Size);
end;
finally
FileStream.Free;
end;
end;
实际上,数据是正确的,直到
GetInvocationMetadata().ResponseContent := a;
responseContent会破坏数据,就像您在十六进制编辑器中看到的那样。一个例子。整个文件没有损坏,只有几个字符。
原始图片
经服务器发送后
有人遇到过同样的错误吗?如果直接进入有效的流,但它并不引起我的兴趣。
谢谢!
答案 0 :(得分:0)
有同样的问题。尝试这样的事情。
procedure TAPI.GetFile(UID: string);
var
LFS: TFileStream;
I: Integer;
LByte: Byte;
begin
try
LFS := TFileStream.Create('e:\image.jpg', fmOpenRead);
for I := 0 to Pred(LFS.Size) do
begin
LFS.Read(LByte, 1);
GetInvocationmetaData.ResponseContent := GetInvocationmetaData.ResponseContent + Char(LByte);
end;
GetInvocationmetaData.ResponseContentType := 'image/jpeg';
finally
LFS.Free;
end;
end;