0

我使用 URLDownloadToFile 在 Delphi 中下载文件。在 url 中没有文件的真实名称。是否可以只指定文件的路径,保留即资源管理器显示的默认名称?

4

1 回答 1

5

您处于 catch-22 的情况。您需要提供URLDownloadToFile()文件名,但您必须先请求 URL 以发现它是否有自己的文件名。

你有两个选择:

  1. 首先向 URL发送单独的HEAD请求并检查Content-Disposition响应标头(如果存在)。您可以为此使用HttpSendRequest()andHttpQueryInfo()或任何其他 HTTP 库。然后,您可以根据需要格式化文件名,然后下载该文件名的 URL。

  2. 使用临时文件名进行下载,然后检查Content-Disposition响应标头(如果存在),并根据需要重命名文件。要从您那里获取响应标头,URLDownloadToFile()您必须编写一个实现IBindStatusCallbackIHttpNegotiateCOM 接口的类,然后将该类的实例传递给lpfnCB参数。响应标头将传递给您的IHttpNegotiate.OnResponse()实现。

于 2014-05-23T15:12:44.537 回答