delphi - 从触发器下载delphi中的文件并捕获文件名

标签 delphi http

我有一个网站的网址。它看起来像这样:http://www.example.com/downloads/file/4789/download

我想将文件保存到我的系统,但我不知道如何在我的示例中获取由 URL 触发的下载文件名。一些文件是 pdf 其他文件是 doc 和 rtf 等。

如果有人能指出文件名问题的方向以及要使用的组件,我将不胜感激。

最佳答案

要从 url 获取文件名,您可以检索 HEAD 信息并检查 Content Disposition标题字段。对于此任务,您可以使用 TIdHTTP indy 组件。如果 Content Disposition 没有文件名,您可以尝试解析 url。

试试这个示例。

{$APPTYPE CONSOLE}

{$R *.res}

uses
  IdURI,
  IdHttp,
  SysUtils;

function GetRemoteFileName (const URI: string) : string;
var
  LHttp: TIdHTTP;
begin
  LHttp := TIdHTTP.Create(nil);
  try
    LHttp.Head(URI);
    Result:= LHTTP.Response.RawHeaders.Params['Content-Disposition', 'filename'];
    if Result = '' then
     with TIdURI.Create(URI) do
      try
       Result := Document;
      finally
       Free;
      end;
  finally
    LHttp.Free;
  end;
end;

begin
  try
    Writeln(GetRemoteFileName('http://dl.dropbox.com/u/12733424/Blog/Delphi%20Wmi%20Code%20Creator/Setup_WmiDelphiCodeCreator.exe'));
    Writeln(GetRemoteFileName('http://studiostyl.es/settings/downloadScheme/1305'));

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;
end.

关于delphi - 从触发器下载delphi中的文件并捕获文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10987918/

相关文章:

ios - 多个经理的 Alamofire 自定义 cookie 存储

delphi - 从任务栏激活窗口

android - 有没有人有Delphi的Android访问USB类的例子?

delphi - Richedit 样式格式自行更改

javascript - 如何使用 Node 'http' 重定向到目标 url

javascript - 无法解构属性,因为它是未定义的

javascript - 在 Angular 2 中处理来自 http.get 的成功和错误响应

delphi - delphi中如何用鼠标移动圆圈?

macos - 如何允许 Delphi XE2 从运行 Windows 7 的 VirtualBox VM 中查看 Mac 上的共享文件夹

http - 如何设置 Cloudflare 防火墙以阻止假冒的 Google 机器人