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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |