如何在PHP中下载通过 URL 触发的 CSV 文件?
为什么我们需要下载 CSV 文件?
逗号分隔值或 CSV 文件是计算机科学的重要组成部分。几乎所有训练数据科学模型所需的数据集都是 CSV 文件格式。数据集在互联网上随处可见,无论是在某人的个人计算机还是服务器上,将它们轻松地放在一个人的机器上变得非常必要。在服务器端,如果人们可以开发一个服务器端系统,通过指向数据集的任何 URL 轻松地在服务器上下载 CSV 文件,则可以轻松地用各种数据集训练他或她的网络模型。
我们如何下载通过 URL 触发的 CSV 文件?
使用PHP通过 URL 下载 CSV 文件非常容易,我们将在此处讨论如何在服务器端和客户端下载 CSV 文件。
服务器端下载:
为此,我们需要一个PHP函数file_get_contents() 。这是一个内置的PHP函数,它以字符串类型读取文件的内容。该函数使用内存映射技术,在服务器端有一个缓存。因此,对于我们的目的来说,这是一个更好的选择。
句法:
file_get_contents($path, $include_path,
$context, $start, $max_length)
参数:该函数有一个强制参数, $path和其余的都是可选的。
- $path:它保存相关文件的路径或 URL。
- $include_path:如果该值设置为 1,它将在 include_path(在PHP.ini 中)搜索文件。
- $context:用于指定上下文。
- $max_length:用于限制要读取的字节数。
返回值:如果进程失败,则返回从文件中读取的数据或 False。
示例1:简单示例演示了如何使用file_get_contents()函数将CSV 文件下载到服务器端。
输出:
浏览器将在成功执行时显示的响应。
在服务器目录中下载的文件。
对于客户端下载:通过PHP强制客户端上的 CSV 文件使用名为readfile() 方法的PHP内置函数轻而易举。该函数读取文件并将其传递到输出缓冲区。
句法:
readfile($filename, $include_path, $context)
参数:
- $filename:要读取的文件名。
- $include_path:如果该值设置为 1,它将在 include_path(在PHP.ini 中)搜索文件。
- $context:用于指定上下文。
返回值:成功返回读取的字节数,否则返回 False。
示例 2:下面的简单程序演示了使用readfile()函数在客户端机器上下载 csv 文件。
";
// Use basename() function to return
// the base name of file
$file_name = basename($url);
$info = pathinfo($file_name);
// Checking if the file is a
// CSV file or not
if ($info["extension"] == "csv") {
/* Informing the browser that
the file type of the concerned
file is a MIME type (Multipurpose
Internet Mail Extension type).
Hence, no need to play the file
but to directly download it on
the client's machine. */
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header(
"Content-Disposition: attachment; filename=\""
. $file_name . "\"");
echo "File downloaded successfully";
readfile ($url);
}
else echo "Sorry, that's not a CSV file";
exit();
?>
输出: