kat*_*sen 4 delphi indy mime-types
我一直在使用Synapse库从互联网上下载文件,但我最近将我的应用程序转换为使用INDY而我错过了Synapse库中的一个更好的功能,即能够轻松获取Mime类型的在将文件保存到本地计算机之前从服务器下载的文件.INDY是否具有此功能,如果有,我该如何访问它?
您可以发出HTTP HEAD请求并检查Content-Type标头.在你真正GET的文件(下载)之前:
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;
Run Code Online (Sandbox Code Playgroud)
在ContentType您收到回依赖于Web服务器实现,并不能保证在每个服务器相同.
另一个选项是实际上GET是文件,并将其内容保存到内存流,例如TMemoryStream(不是本地文件).Indy提供了一个过载:
Http.Get(Url, AStream);
Run Code Online (Sandbox Code Playgroud)
然后检查Http.Response.ContentType,并将流保存到文件:AStream.SaveToFile.
不确定这里的相关性,但请注意Indy也可以返回/猜测本地文件的mime类型(给定文件扩展名).与GetMIMETypeFromFile(使用IdGlobalProtocols).另见这里.
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |