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

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

发布时间:2020-12-15 09:37:01 所属栏目:大数据 来源:网络整理
导读:我一直在使用Synapse库从互联网上下载文件,但我最近将我的应用程序转换为使用INDY而我错过了Synapse库中的一个更好的功能,即能够轻松获取Mime类型的在将文件保存到本地计算机之前从服务器下载的文件. INDY是否具有此功能,如果有,我该如何访问它? 解决方法
我一直在使用Synapse库从互联网上下载文件,但我最近将我的应用程序转换为使用INDY而我错过了Synapse库中的一个更好的功能,即能够轻松获取Mime类型的在将文件保存到本地计算机之前从服务器下载的文件. INDY是否具有此功能,如果有,我该如何访问它?

解决方法

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

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服务器实现,并且不保证在每台服务器上都相同.

另一个选择是实际获取文件并将其内容保存到内存流(如TMemoryStream(而不是本地文件)). Indy提供了一个过载:

Http.Get(Url,AStream);

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

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

(编辑:李大同)

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

    推荐文章
      热点阅读