【问题标题】:Download file with original filename使用原始文件名下载文件
【发布时间】:2012-11-02 16:39:25
【问题描述】:

使用 vba 和 excel,我希望从我不知道原始文件名的 url 下载文件。 使用 URLDownloadToFile 或与 WinHttpRequest 一样的其他方法,希望您为正在下载的文件命名。我想用原始文件名保存,就像导航到 Internet Explorer 上的 url 一样。

我的网址示例: https://mysite.com/PDF/CreatePDFforProcess.aspx?ID=6370947

在 Internet Explorer 上,这将打开一个另存为窗口,并带有默认文件名建议。

非常感谢

【问题讨论】:

  • 嗨 Fcoelho,如果我理解你的话,你想在 Excel 中使用 VBA 脚本来浏览网站并下载文件。对吗?
  • 是的,没错。我知道文件的 URL,只是不知道我会得到什么文件名。我想使用默认文件名,就像我使用浏览器一样。就像这个例子:pdfmyurl.com?url=www.opentracker.net,你会得到一个 pdf 文件,但你无法从链接中分辨出类型和名称。
  • 您确定要为此使用嵌入在 Excel 中的 VBA 吗?我会尽快推荐 Greasemonkey 脚本或使用其他类型的浏览器插件。
  • 是的,当然。我在一个上传 XML 计算报告的 excel 工具上开发它。我需要下载的文件是经过验证的计算文件。拥有excel中的功能,将简化并大大减少用户的手动工作流程。

标签: vba excel winhttprequest


【解决方案1】:

您可以从响应 HTTP 标头中获取文件类型和文件名(有时)

例如,我通过名为 xhr 的 XMLHttpRequest 对象获取文件:

debug.print xhr.getResponseHeader("Content-Type")
>application/pdf
debug.print xhr.getResponseHeader("Content-Disposition")
>attachment; filename="test.pdf"

您不应该期望Content-Disposition 总是被填充。由于您上传了输入文件,因此通过输入文件名称的某些变体来命名响应文件可能更有意义。

【讨论】:

    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 2013-12-27
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多