在Delphi rest服务器中使用文件流对象返回图像时,它不会显示在浏览器中.这是一个返回图像的示例方法:
function TServerClass.Image: TFileStream;
begin
Result := TFileStream.Create('pathtofile\image.png', fmOpenRead or fmShareDenyNone);
end;
Run Code Online (Sandbox Code Playgroud)
And*_*sen 17
问题是Delphi REST服务器总是将内容类型设置为text/html.当您发送其他类型的内容时,这会混淆浏览器.这是一个错误,因为大多数响应都是json,这意味着最合理的默认内容类型应该是application/json.
幸运的是,有一种方法可以从服务器方法中覆盖内容类型.
您需要将Data.DBXPlatform添加到实现的使用列表中.
此单元包含GetInvocationMetadata函数,该函数可以访问正在构建的响应.它返回一个TDSInvocationMetadata对象,其中varius其他有用的属性具有ResponseContentType属性.
设置此属性会覆盖方法在http响应中返回的Content-Type标头.
给定的例子变成:
function TServerClass.Image: TFileStream;
begin
Result := TFileStream.Create('pathtofile\image.png', fmOpenRead or fmShareDenyNone);
GetInvocationMetadata.ResponseContentType := 'image/png';
end;
Run Code Online (Sandbox Code Playgroud)
现在,结果图像将在浏览器中正确显示.
| 归档时间: |
|
| 查看次数: |
5515 次 |
| 最近记录: |