【发布时间】:2013-02-28 11:11:54
【问题描述】:
我正在尝试从网站下载一个大的 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,但它有可能变得更大。
【问题讨论】:
-
试试
curl_getinfo($ch),看看所有参数是否正常。 -
@KarolyHorvath 谢谢,但我已经知道如何使用谷歌了。我能找到的所有示例都需要将文件加载到内存中才能获取标题。
-
@SilentAssassin 我虽然 getinfo 只与请求而不是响应有关?我应该检查哪些参数?
-
@James: 获取长度 + 然后保存到文件
标签: php file curl file-io download