您如何计算文件的 content_hash 以用于 Dropbox 的 API?

How do you calclulate a file's content_hash for use with Dropbox's API?

我需要根据 Dropbox 上的副本验证本地文件副本的内容。我通过对 API v2 的 get_metadata 方法的请求获取该信息。

function dropbox_content_hash($file) {
    $fh = fopen($file, 'r');
    if (!$fh) {
        # warning already issued
        return;
    }
    $hashes = '';
    $zero_byte_exception_check = true;
    do {
        $chunk = fread($fh, 4194304);
        if ($zero_byte_exception_check) {
            if ($chunk === '') {
                return 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
            }
            $zero_byte_exception_check = false;
        }
        $hashes .= hash('sha256', $chunk, true);
    } while (!feof($fh));
    fclose($fh);
    return hash('sha256', $hashes);
}