code: public function downloadResume(string $filePath, string $url, array $headers = []) {
          try {
              $pos = 0;
              if (is_file($filePath)) {
                  $pos = filesize($filePath);
              }
              error_clear_last();
              $fp = fopen($filePath, 'ab');
              if ($fp === false && ($error = error_get_last())) {
                  throw new IOException($error['message'], $error['type']);
              }
              $c = $this->curlDownloadInit($url, $headers, $fp);
              curl_setopt($c, CURLOPT_RESUME_FROM, $pos);
              if (!curl_exec($c)) {
                  throw new CURLException(curl_error($c), curl_errno($c));
              }
          } finally {
              is_resource($c ?? null) && curl_close($c);
              is_resource($fp ?? null) && fclose($fp);
          }
      }
docs: @param string $filePath
  @param string $url
  @param array  $headers
  
  @throws CURLException
  @throws IOException