使用 PHP 从 URL 下载文件
有两种使用PHP从URL下载文件的一般方法:
1. 使用 PHP file_get_contents() 和 file_put_contents() 函数:
仅当 Web 宿主允许函数运行时,才能使用此方法。出于安全原因,许多虚拟主机都关闭了此功能,因此您应该在使用此方法之前检查该功能是否已启用。file_get_contents
成功获取文件后,将用于实际将文件保存到某个位置。file_put_contents
<?php // 设置下载URL $fileUrl = 'https://www.baidu.com'; // 使用basename()获取文件名和扩展名 $fileName = basename( $fileUrl ); // 指定文件保存路径 $savePath = '/dir/' . $fileName; // 使用file_get_contents获取文件,使用@隐藏可能的错误 $file = @file_get_contents( $fileUrl ); // 使用file_put_contents使用我们定义的路径保存文件,并检查是否有任何错误 if ( file_put_contents( $savePath, $file ) ) { echo 'File downloaded successfully'; } else { echo 'File failed to download'; }
如果消息告诉下载成功,则文件将存储在我们定义的保存路径上。
2. 使用 PHP CURL 和 fopen()
CURL方法使用得比较广泛,建议您使用PHP CURL从URL下载文件,而不是使用函数。file_get_contents
CURL提供了更多的兼容性,对下载过程的更多控制,并帮助您熟悉在PHP中使用CURL,这对于PHP中的许多其他与网络相关的任务至关重要。此外,使用文件交互任务将更方便。fopen
要使用PHP和CURL从URL下载文件,示例:fopen
<?php // 设置下载URL $fileUrl = 'https://www.baidu.com'; // 初始化CURL $ch = curl_init( $url ); // 使用basename()获取文件名和扩展名 $fileName = basename( $fileUrl ); // 指定文件保存路径 $savePath = '/dir/' . $fileName; // 初始化fopen指针来存储文件。 // 'w'是写模式,'b'是二进制模式,如果文件是基于文本的文件,可以被排除 $fp = fopen( $savePath, 'wb' ); // 将文件传输选项和文件头设置为CURL curl_setopt( $ch, CURLOPT_FILE, $fp ); curl_setopt( $ch, CURLOPT_HEADER, 0 ); // 执行CURL会话 curl_exec( $ch ); // 运行后关闭会话以释放资源 curl_close( $ch ); // 关闭文件指针 fclose( $fp );
如果运行代码后未显示错误,则文件将存储在定义的位置。$savePath