Rest Delphi Xe10 Datasnap:图像函数发送不工作

Rest Delphi Xe10 Datasnap:图像函数发送不工作,rest,delphi,jpeg,datasnap,delphi-10-seattle,Rest,Delphi,Jpeg,Datasnap,Delphi 10 Seattle,我的发送功能有问题。我的程序在Xe8中正常工作,但升级到Xe10后,我遇到了一个问题:加密 我已经创建了一个简单的项目datasnap,只使用了类似的bug功能 procedure TServerMethods1.test3; VAR a : string; begin a := LoadFileToStr('C:\demo\Bitmaps\Mazak_Matrix.JPG'); GetInvocationMetadata.ResponseContentType := 'im

我的发送功能有问题。我的程序在Xe8中正常工作,但升级到Xe10后,我遇到了一个问题:加密

我已经创建了一个简单的项目datasnap,只使用了类似的bug功能

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会破坏数据,就像您在hex编辑器上看到的那样。举个例子。整个文件没有损坏,只有几个字符

原画

通过服务器发送后

有人遇到了相同的错误?如果直接去一条有效的溪流,但我对此不感兴趣


谢谢

也有同样的问题。试试这样的

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;

二进制数据不是字符串,请将其视为字符串。