我正在elfinder插件上做一些自定义工作,我希望能够根据文件名或文件路径获得文件的哈希。在我的连接器PHP文件中,我正在使用accessControl回调来创建一个自定义函数:function access($attr, $path, $data, $volume) {
。我可以使用此函数的$path
变量来获取文件哈希字符串吗?我知道elfinder有一种自定义的获取文件哈希的方法,我知道我可以很容易地在javascript上获取file.hash
,但我需要基于文件/文件夹路径在PHP中访问它。有没有一个PHP函数可以从这里调用以获取文件哈希?
有什么想法吗?
谢谢!
编辑:以下是Elfinder文档的一些信息https://github.com/Studio-42/elFinder/wiki/Client-Server-API-2.0:
新的2.x PHP连接器使用以下算法从文件路径:
remove root path from file path encrypt resulting path so it could be later decrypted (not implemented yet, but stub is present) encode already encrypted path using base64 with replacement +/= -> -_. remove trailing dots add prefix - unique volume id (must start with [a-z]) resulting string must be valid HTML id attribute (that is why base64 is used).
使用这种算法,即使没有加密,客户端也无法获得真实的服务器上的文件路径仅相对于根路径。此哈希建议使用算法,但您可以使用自己的实现,因此只要它符合以下两条规则:
hash must be valid for storage in the id attribute of an HTML tag hash must be reversible by connector
即使是elFinder 2.1也很好吗?elFinder 2.1.3+将具有$volume->getHash($path, $name)
。
- https://github.com/Studio-42/elFinder/blob/47be3cd34548d028557754df38cc1f7f9b05b581/php/elFinderVolumeDriver.class.php#L1019-1031
请尝试夜间构建。-https://github.com/Studio-42/elFinder/archive/2.1-src.zip
如果$path是文件的完整路径,您应该能够执行以下操作:
md5(file_get_contents($path))
或
hash('sha256', file_get_contents($path))
在PHP中,散列函数将文件作为字符串,因此可以使用file_get_contents将文件作为一个字符串。