📜  如何在PHP中下载通过 URL 触发的 CSV 文件?

📅  最后修改于: 2022-05-13 01:54:11.255000             🧑  作者: Mango

如何在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文件

在服务器目录中下载的文件。
在php中下载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(); 
  
?>

输出:
在php中下载csv文件