【问题标题】:Download a file using php使用 php 下载文件
【发布时间】:2017-07-19 12:21:32
【问题描述】:

我想从网站“http://nccpl.com.pk/market-information/fipi-lipi/fipi-sector-wise”下载一个文件,但是有一个提取按钮可以下载 excel 文件。如何使用php每天自动下载。

【问题讨论】:

  • @Fred-ii- 我猜 OP 不仅要我们编写 php 代码来获取文件,还要添加一些 mysqli 魔法来将其添加到他的数据库中 :-)跨度>
  • 你必须使用 Curl 和 cronnjobs

标签: php


【解决方案1】:

数据导出链接正在浏览器中从表中生成 CSV 格式的 CSV。因此,您将无法仅使用 PHP 下载它,因为该文件实际上并不存在于任何地方。

但是,您可以通过下载页面的 html 并对其进行解析,仅使用 PHP 从表中生成文件。但是,我不知道 PHP 中是否有用于此目的的工具。

【讨论】:

    【解决方案2】:

    相信文件会自动更新,您可以使用

    header('Location: /path-to-file/filename');
    

    例子

    <?php
      header('Location: '/docs/pdf/mypdf.pdf');
    ?>
    

    只需将其写入 .php 文件,并让用户在单击下载按钮时访问 .php 文件。确保文件具有下载权限。

    【讨论】:

    • 如果涉及到用户,如何按照问题中的说明“自动”下载?
    • 你可以做的是创建一个像这样的按钮 下载 或者将它添加到一个按钮中以使用 php 自动下载文件
    • 是的,但这仍然是用户必须通过单击按钮来调用的过程。 OP 希望“每天自动”下载,这实际上意味着无需用户干预。让用户每天都这样做是不可靠的,离“自动”还有很长的路要走。它需要一个由计时器触发的自动化脚本(例如 cron 或 Windows 计划任务),而不是 GUI。仅仅制作一个将用户重定向到另一个链接的按钮并不是自动化的。
    • 很好找到了这个....挖一点谷歌搜索stackoverflow.com/a/15760383/6051682希望这是需要的...
    • 是的,基于此的东西会得到更好的答案。但是,请注意 Mobius 的回答 - 在 OP 提到的网站的特定情况下,这在技术上可能根本不可能,无论是否自动化。
    【解决方案3】:
    readfile($file)
    

    是你需要的我的朋友。 这是来自php.net的sn-p

    <?php
    $fichero = 'mono.gif';
    
    if (file_exists($fichero)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($fichero).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($fichero));
        readfile($fichero);
        exit;
    }
    ?>
    

    【讨论】:

    • 这个答案是为了让一个网站提供一个下载它已经托管,这根本不是问题所在,即网络抓取动态生成的文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 2011-04-05
    • 2010-11-03
    相关资源
    最近更新 更多