【问题标题】:Download file as csv when running script from command line从命令行运行脚本时将文件下载为 csv
【发布时间】:2015-04-07 10:39:21
【问题描述】:

当我从浏览器运行我的 php 脚本时,我会使用 $fp = fopen('php://output', "w");fputcsv 和适当的 header 标签自动下载到客户端。效果很好。

当我使用php index.php 2014(“2014”是我传入的 argv)从命令行运行我的脚本时,通常会进入 csv 的内容实际上会出现在命令行框中。

如何让我的代码在使用命令行时仍然下载 csv 文件?

如果重要的话,我正在使用 Vagrant 和 VirtualBox 运行 ubuntu。

【问题讨论】:

  • 显示你在命令行中运行的命令
  • 您不能使用浏览器意义上的命令行“下载”任何内容 - 没有 HTTP 客户端。从命令行运行时,您需要将文件写入文件夹或设置目标。
  • @Bulk - 是的。我对客户端/服务器端的分歧有点乐观,而且普遍感到困惑。
  • 是的,我想你可能是 - 命令行是为了与服务器直接交互 - 这不是你希望客户参与的事情 :)

标签: php command-line argv fputcsv


【解决方案1】:

您可以按如下方式更新该行,其中 $$filepath 是文件路径名。

$fp = fopen($$filepath, "w");

【讨论】:

  • 我最初是这样的。你是对的。但它会下载到服务器。不是客户。
  • Yes 文件将在运行脚本的终端系统中生成。在这种情况下,您所说的客户端计算机是什么意思?
  • 我的意思是,例如,用户可以将其保存到他们的桌面。但是从我对这个问题的回答来看,我开始明白这可能是不可能的。哪个好
  • 那么 php 脚本应该生成 csv 并返回文件路径,以便您可以从客户端机器使用另一个 php 代码从服务器端下载。
【解决方案2】:

如果你在 index.php 文件上显示 CSV 的内容,你可以执行这个命令:

php index.php 2014 > my_csv.csv

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 2017-12-07
    • 2018-10-05
    • 2020-03-15
    • 2012-05-03
    • 2011-05-01
    • 2013-09-14
    • 2013-07-18
    相关资源
    最近更新 更多