我正在尝试从网站下载一个较大的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,但它有可能变得更大。
答案 0 :(得分:1)
在不知道要下载的文件大小的情况下,无法确定它是否已完全下载。
因此,您需要获取文件的标头信息。文件头通常很小,如果您正在下载大文件,那值得付出努力。标题将包含文件大小以及其他一些信息。
由于您之前没有尝试过标题,请尝试使用这个整齐的小函数来确定Php Remote File Size without downloading file的文件大小。
该示例详细说明了如何下载标题并提取大小信息。然后,您只需将此值与下载的文件大小和中提琴进行比较。