从URL下载文件并验证文件是否已完全下载

时间:2013-02-28 11:11:55

标签: php file curl file-io download

我正在尝试从网站下载一个较大的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,但它有可能变得更大。

1 个答案:

答案 0 :(得分:1)

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

因此,您需要获取文件的标头信息。文件头通常很小,如果您正在下载大文件,那值得付出努力。标题将包含文件大小以及其他一些信息。

由于您之前没有尝试过标题,请尝试使用这个整齐的小函数来确定Php Remote File Size without downloading file的文件大小。

该示例详细说明了如何下载标题并提取大小信息。然后,您只需将此值与下载的文件大小和中提琴进行比较。