我使用URLDownloadToFile在Delphi中下载文件。在url中没有文件的真实名称。是否可以仅指定文件的路径,保留默认名称,即资源管理器显示?
答案 0 :(得分:5)
你处于陷阱状态。您需要为URLDownloadToFile()
提供一个文件名,但您必须首先请求URL以发现它是否有自己的文件名。
您有两种选择:
首先向网址发送单独的HEAD
请求,然后检查Content-Disposition
响应标头(如果有)。您可以使用HttpSendRequest()
和HttpQueryInfo()
或任何其他HTTP库。然后,您可以根据需要格式化文件名,然后将URL下载到该文件名。
使用临时文件名进行下载,然后检查Content-Disposition
响应标头(如果有),并根据需要重命名该文件。要从URLDownloadToFile()
获取响应头,您必须编写一个实现IBindStatusCallback
和IHttpNegotiate
COM接口的类,然后将该类的实例传递给lpfnCB
参数。响应标头将传递到您的IHttpNegotiate.OnResponse()
实施。