使用URLDownloadToFile下载文件

时间:2014-05-23 09:59:10

标签: delphi urlmon

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

1 个答案:

答案 0 :(得分:5)

你处于陷阱状态。您需要为URLDownloadToFile()提供一个文件名,但您必须首先请求URL以发现它是否有自己的文件名。

您有两种选择:

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

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