【问题标题】:I want the actual file name that is returned by a PHP script我想要 PHP 脚本返回的实际文件名
【发布时间】:2011-02-11 22:44:33
【问题描述】:

我正在编写一个 python 脚本来下载由 URL 给出的文件。不幸的是,该 URL 采用 PHP 脚本的形式,即 www.website.com/generatefilename.php?file=5233

如果您在浏览器中访问该链接,系统会提示您下载实际文件和扩展名。我需要将此链接发送给下载器,但我无法将 PHP 链接发送给下载器。

如何获取可用变量中的完整文件名?

【问题讨论】:

  • 你能澄清一下吗?您希望变量包含“generatefilename.php”吗?
  • 我希望它包含 php 脚本返回的文件名,例如www.website.com/fullpath/5233Retrieved.dat
  • 您将无法获得像www.website.com/fullpath/5233Retrieved.dat 这样的网址。很可能不存在这样的 URL。您可以从 PHP 发送到 Python 脚本的 Content-Disposition 标头中获取 5233Retrieved.dat 文件名。

标签: php python url scripting


【解决方案1】:

您需要做的是检查 PHP 脚本发送的 Content-Disposition 标头。它看起来像:

Content-Disposition: attachment; filename=theFilenameYouWant

至于您如何实际检查该标头,这取决于您当前用于获取 URL 的 python 代码。如果您发布一些代码,我将能够给出更详细的答案。

【讨论】:

  • 我正在从 RSS 提要中检索 PHP url,并希望将通过访问 PHP URL 生成的文件(和完整路径)传递到变量中,以便我可以将其发送到下载器应用程序通过本地主机 URL。基本上给出了 PHP URL,我没有处理 PHP 的代码
  • 您是否使用 Python 通过 HTTP 访问 PHP 脚本?
  • 我正在使用 python 来解析 XML 并获取 PHP 脚本的 URL,例如www.website.com/generatefilename.php?file=5233 并将其存储在变量中。我想要的是获取脚本生成的文件名的 URL。我不知道该怎么做。到目前为止,我只有这个指向 PHP 脚本的 URL,而且我知道如果我在 Firefox 中访问它,会出现一个下载对话框,用于生成/检索的文件,例如5233Retrieved.dat,这就是我想将其完整路径存储在变量中的文件。
  • 如果您使用 Python 获取 www.website.com/generatefilename.php?file=5233 URL,您可以检查 HTTP 标头,它们将包含文件名。在使用 Python 通过 HTTP 获取内容时进行身份验证是一个单独的问题。
【解决方案2】:
urllib.urlretrieve(URL, directory + "\\" + filename + "." + extension)

这会将PHP文件生成的文件以指定的名称和扩展名保存到指定的文件夹中。我将下载器配置为自动检查此文件夹中的新文件,因此此解决方案适用于我。

【讨论】:

  • 没关系,文件大小都一样,而且数据不正确!
  • 实际上我重命名了文件,发现它们是需要身份验证的网页,所以我认为我的脚本在尝试获取文件之前没有经过身份验证。因此,如果可能的话,如果我能弄清楚如何通过 URL 对网站进行身份验证,它可能会起作用。
  • 好的,通过身份验证,这行检索生成的文件。
猜你喜欢
  • 2016-08-16
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2013-12-23
  • 2017-03-15
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多