public function b2UploadPart($uploadURL, $token, $filePath, $minimumPartSize = 100000000)
    {
        $sha1s          = [];
        $responses      = [];
        $totalBytesSent = 0;
        $i              = 1; // current part

        $bytesSentForPart = $minimumPartSize;
        $fileSize = filesize($filePath);
        $file = fopen($filePath, "r");
        while($totalBytesSent < $fileSize) {
            // Determine the number of bytes to send based on the minimum part size
            if (($fileSize - $totalBytesSent) < $minimumPartSize) {
                $bytesSentForPart = ($fileSize - $totalBytesSent);
            }
            // Get a sha1 of the part we are going to send
            fseek($file, $totalBytesSent);
            $data = fread($file, $bytesSentForPart);
            array_push($sha1s, sha1($data));
            fseek($file, $totalBytesSent);

            $curl = $this->prepareCurl();
            $request = new Browser($curl);

            $headers = array(
                'Accept' => 'application/json',
                'Authorization' => $token,
                'Content-Length' => $bytesSentForPart,
                'X-Bz-Part-Number' => $i,
                'X-Bz-Content-Sha1' => $sha1s[$i - 1],
            );
            $response = $request->post($uploadURL, $headers, $data);
            $responses[] = new B2Response($response);
            // Prepare for the next iteration of the loop
            $i++;
            $totalBytesSent = $bytesSentForPart + $totalBytesSent;
        }
        fclose($file);
        return $responses;
    }