1

我正在尝试从网站下载一个大的 csv 文件。我已经看到使用 file_get_contents 和 file_put_contents 的建议,但由于文件大小,我选择使用 cURL 及其文件句柄选项,因此数据直接进入文件而不是 PHP 内存。

但是,我似乎遇到了一个奇怪的错误,即整个文件并不总是下载,而且我不确定如何在不使用响应标头的情况下验证整个文件是否已下载,我不确定在使用时如何访问cURL 的文件句柄选项。

这就是我现在用来获取文件的东西。

    $ch = curl_init('*FILE_TO_GET*');
    $fp = fopen('*WHERE_TO_FILE*', 'wb');
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
    fclose($fp);

这些文件目前约为 3.8 MB,但它有可能变得更大。

4

1 回答 1

1

在不知道要下载的文件大小的情况下,无法确定它是否已完全下载。

因此,您需要获取文件的标头信息。文件头通常很小,考虑到您正在下载一个大文件,这是值得的。标头将具有文件大小以及其他一些信息。

由于您之前没有尝试过获取标题,请尝试这个简洁的小功能,它可以在Php Remote File Size 确定文件大小,而无需下载文件

那里的示例详细说明了如何下载标题和提取大小信息。然后您可以简单地将此值与下载的文件大小和中提琴进行比较。

于 2013-02-28T12:11:01.597 回答