Elfinder需要在PHP中获取文件哈希



我正在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将文件作为一个字符串。

相关内容

  • 没有找到相关文章

最新更新