使用 php 下载文件

Posted

技术标签:

【中文标题】使用 php 下载文件【英文标题】:Download a file using 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 【参考方案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。仅仅制作一个将用户重定向到另一个链接的按钮并不是自动化的。 很好找到了这个....挖一点谷歌搜索***.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;

?>

【讨论】:

这个答案是为了让一个网站提供一个下载它已经托管,这根本不是问题所在,即网络抓取动态生成的文件。

以上是关于使用 php 下载文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 下载文件

PHP下载远程文件

如何压缩文件夹并使用php下载?

如何启动使用jQuery自动下载zip文件的PHP脚本

使用 PHP 下载 FTP 文件 [重复]

如何使用 PHP 代码从服务器下载文件