使用URLDownloadToFile下载文件

Alb*_*rto 0 delphi urlmon

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

Rem*_*eau 5

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

你有两个选择:

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

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