我使用wininet
(使用名为 的 nsis 插件inetc
)下载文件。
我想用 url 中使用的相同文件名保存文件,例如http://some.domain.com/myfile.doc
应该保存为myfile.doc
. 问题是当我有一个带有重定向的网址时。例如,我可以获得 http://some.domain.com/
哪些重定向到http://some.domain.com/myfile.doc
,并且我想将其保存为myfile.doc
.
我该如何解决这个问题?
INetC 并没有真正设计为支持这一点,但我想您可以INetC::head
循环调用并解析返回的标头,直到它不再是重定向...
编辑:
由于 INetC 仅设计用于处理由调用者命名的文件,因此它仅依赖于高级 WinInet 默认处理。
虽然可以修改 INetC 或创建新插件,但让服务器完成工作可能会减少工作量。它可以返回 INetC::head 可以下载的 content-disposition 标头或像 server.com/?getname 这样的特殊 URL,它只返回名称,因此您首先使用 INetC::get 获取名称,然后执行真正的 INetC::获取正确的目标文件名...