加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

从Delphi REST服务器返回一个图像并在浏览器中显示它

发布时间:2020-12-15 04:16:21 所属栏目:大数据 来源:网络整理
导读:在Delphi rest服务器中使用文件流对象返回图像时,它不会显示在浏览器中.这是一个返回图像的示例方法: function TServerClass.Image: TFileStream;begin Result := TFileStream.Create('pathtofileimage.png',fmOpenRead or fmShareDenyNone);end; 解决方法
在Delphi rest服务器中使用文件流对象返回图像时,它不会显示在浏览器中.这是一个返回图像的示例方法:
function TServerClass.Image: TFileStream;
begin
  Result := TFileStream.Create('pathtofileimage.png',fmOpenRead or fmShareDenyNone);
end;

解决方法

问题是Delphi REST服务器总是将内容类型设置为text / html.当您发送其他类型的内容时,这会混淆浏览器.这是一个错误,因为大多数响应都是json,这意味着最合理的默认内容类型应该是application / json.

幸运的是,有一种方法可以从服务器方法中覆盖内容类型.

您需要将Data.DBXPlatform添加到实现的使用列表中.

该单元包含函数GetInvocationMetadata,可以访问正在构建的响应.它返回一个TDSInvocationMetadata对象,其中varius其他有用的属性具有ResponseContentType属性.

设置此属性会覆盖方法在http响应中返回的Content-Type标头.

给定的例子变成:

function TServerClass.Image: TFileStream;
begin
  Result := TFileStream.Create('pathtofileimage.png',fmOpenRead or fmShareDenyNone);
  GetInvocationMetadata.ResponseContentType := 'image/png';
end;

现在,结果图像将在浏览器中正确显示.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读