gpt4 book ai didi

delphi - 使用 INDY 检测远程服务器上文件的 Mime 类型

转载 作者:行者123 更新时间:2023-12-03 15:21:04 27 4
gpt4 key购买 nike

我一直在使用 Synapse 库从互联网下载文件,但最近我将我的应用程序转换为使用 INDY,并且我缺少 Synapse 库中更好的功能之一,即能够轻松获取 Mime - 我在将其保存到本地计算机之前从服务器下载的文件的类型。 INDY 是否有此功能?如果有,我该如何访问它?

最佳答案

您可以发出 HTTP HEAD 请求并检查 Content-Type header 。在您实际获取文件(下载)之前:

procedure TForm1.Button1Click(Sender: TObject);
var
Url: string;
Http: TIdHTTP;
begin
Url := 'http://yoursite.com/yourfile.png';
Http := TIdHTTP.Create(nil);
try
Http.Head(Url);
ShowMessage(Http.Response.ContentType); // "image/png"
finally
Http.Free;
end;
end;

您收到的 ContentType 取决于 Web 服务器的实现,并且不保证在每台服务器上都相同。

<小时/>

另一个选项是实际GET文件并将其内容保存到内存流,例如TMemoryStream(而不是本地文件)。 Indy 提供了重载:

Http.Get(Url, AStream);

然后检查Http.Response.ContentType,并将流保存到文件:AStream.SaveToFile

<小时/>

不确定这里的相关性,但还要注意,Indy 也可以返回/猜测本地文件的 mime 类型(给定文件扩展名)。使用GetMIMETypeFromFile(使用IdGlobalProtocols)。另请参阅here .

关于delphi - 使用 INDY 检测远程服务器上文件的 Mime 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25481039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com