Delphi 在服务器上加载位图失败
将进程从XE8迁移到Berlin 10.1时遇到问题 在XE8上,它工作正常 在柏林,我得到一个“加载位图失败”错误 我有一个使用此方法的DataSnap REST服务器:Delphi 在服务器上加载位图失败,delphi,bitmap,firemonkey,datasnap,delphi-10.1-berlin,Delphi,Bitmap,Firemonkey,Datasnap,Delphi 10.1 Berlin,将进程从XE8迁移到Berlin 10.1时遇到问题 在XE8上,它工作正常 在柏林,我得到一个“加载位图失败”错误 我有一个使用此方法的DataSnap REST服务器: function TSM.Downloafile(): TStream; var s: TFileStream; begin s := TFileStream.Create('C:\image1.jpg', fmOpenReadWrite); Result := s; end; 在XE8上,我可以很好地获得流,
function TSM.Downloafile(): TStream;
var
s: TFileStream;
begin
s := TFileStream.Create('C:\image1.jpg', fmOpenReadWrite);
Result := s;
end;
在XE8上,我可以很好地获得流,我可以在浏览器中使用URL查看图像,如:
在柏林,当我尝试显示图像时,我得到了以下字符串:
[122216255244,0,15,…]
然后加载位图失败。当您说DataSnap REST server时,我猜接下来是TSM.Downloafile():TStream;不是来自主线程的调用。位图不是多线程的,只能从主线程使用我已经在URL中使用?json=false解决了这个问题,谢谢作为旁注,如果你不打算写,没有理由使用
fmOpenReadWrite
。在某些环境中,如果您没有对给定文件夹的写入权限,此操作甚至可能失败。此外,考虑到您所说的是从浏览器访问的REST服务器,我怀疑这与Firemonkey有关。我建议将您的问题改为关注REST服务器返回意外格式的事实。至于您的实际问题,我们无法看到足够的相关代码。您在哪里处理请求/响应?对于ContentType
,您传递了什么?进一步说,没有局部变量s的点,直接分配给结果我没有设置ContentType,正如我在XE8上所说的工作正常我可以看到图像,问题在Berlin,流返回一个字符串,如[122216255244,0,15,…],并且该代码在XE8上工作正常,问题在于Berlin返回类似[122216255244,0,15,…]的字符串并失败