0

我想部分下载一个 ftp 文件。我只需要下载让我们说 10MB,但在跳过 100MB 之后(例如)。

在php中,http ://php.net/manual/en/function.ftp-fget.php这个函数允许arbitay起点:

bool ftp_fget  (  resource $ftp_stream  ,  resource $handle  ,  string $remote_file  ,  int $mode  [,  int $resumepos = 0  ] )

但是它不允许我设置我要下载的“多少字节”。

4

2 回答 2

1

您应该能够使用流包装器而不是 FTP 函数打开 FTP 连接(假设您知道文件的路径)。

$fh = fopen('ftp://user:password@example.com/pub/file.txt', 'r');

然后只需使用普通文件功能打开文件并读取您想要的信息。您不能使用fseek(),但fread()应该可以正常工作。

于 2010-05-09T04:15:49.167 回答
1

您可以将--range选项传递给 cURL以从远程文件中检索一系列字节。

如果您安装了curl命令行工具,您可以使用以下方式从 PHP 运行它shell_exec()

$bytes3to4 = shell_exec("curl --range 3-4 ftp://ftp.example.com/pub/file.txt");

或者,如果 cURL 扩展可用,您可以直接从 PHP 使用它:

$ch = curl_init("ftp://ftp.example.com/pub/file.txt");

curl_setopt($ch, CURLOPT_RANGE, "3-4");  // fetch bytes 3 to 4
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$bytes3to4 = curl_exec($ch);

有关详细信息,请参阅cURL 手册

于 2010-05-09T14:00:56.687 回答