我使用 URLDownloadToFile 在 Delphi 中下载文件。在 url 中没有文件的真实名称。是否可以只指定文件的路径,保留即资源管理器显示的默认名称?
问问题
1589 次
1 回答
5
您处于 catch-22 的情况。您需要提供URLDownloadToFile()
文件名,但您必须先请求 URL 以发现它是否有自己的文件名。
你有两个选择:
首先向 URL发送单独的
HEAD
请求并检查Content-Disposition
响应标头(如果存在)。您可以为此使用HttpSendRequest()
andHttpQueryInfo()
或任何其他 HTTP 库。然后,您可以根据需要格式化文件名,然后下载该文件名的 URL。使用临时文件名进行下载,然后检查
Content-Disposition
响应标头(如果存在),并根据需要重命名文件。要从您那里获取响应标头,URLDownloadToFile()
您必须编写一个实现IBindStatusCallback
和IHttpNegotiate
COM 接口的类,然后将该类的实例传递给lpfnCB
参数。响应标头将传递给您的IHttpNegotiate.OnResponse()
实现。
于 2014-05-23T15:12:44.537 回答