This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.
PHP - Manual: hash_update_stream
2024-11-15
(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)
hash_update_stream — 从打开的流向活跃的哈希运算上下文中填充数据
$context
, resource $handle
, int $length
= -1): int
context
由 hash_init() 函数返回的哈希运算上下文。
handle
创建流的函数返回的打开的文件句柄。
length
要从 handle
向活跃的哈希运算上下文中拷贝
的最大字符数。
从 handle
向哈希运算上下文中实际填充的字节数量。
版本 | 说明 |
---|---|
7.2.0 | 接收参数从资源类型修改为 HashContext 对象类型。 |
示例 #1 hash_update_stream() 例程
<?php
$fp = tmpfile();
fwrite($fp, 'The quick brown fox jumped over the lazy dog.');
rewind($fp);
$ctx = hash_init('md5');
hash_update_stream($ctx, $fp);
echo hash_final($ctx);
?>
以上例程会输出:
5c6ffbdd40d9556b73a21e63c3e0e904
This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.
官方地址:https://www.php.net/manual/en/function.hash-update-stream.php