如何在elFinder中链接到特定卷及路径?如何获取驱动器哈希值?
获取elFinder驱动器哈希值(volumeID)的方法
好问题!既然你已经搞定了路径哈希(pathHash)的转换,那获取驱动器哈希(也就是你提到的volumeID)其实有几种简单的方式,我给你一一梳理:
1. 从初始化配置直接获取(最可靠)
elFinder的每个卷(驱动器)在初始化时,要么是你手动指定哈希,要么是系统自动生成:
- 如果你在配置
roots数组时手动设置了hash字段,那这个值就是你要的驱动器哈希:// 初始化elFinder时指定驱动器哈希 var elf = $('#elfinder').elfinder({ roots: [ { driver: 'LocalFileSystem', path: '/path/to/your/files/', hash: 'my_custom_drive_hash' // 这就是volumeID } ] }).elfinder('instance'); - 若未手动指定,初始化完成后可以通过实例获取所有卷的哈希:
// 获取elFinder实例 var elfInstance = $('#elfinder').elfinder('instance'); // 遍历所有卷,输出每个卷的哈希和根路径 elfInstance.volumes.forEach(volume => { console.log(`驱动器哈希:${volume.hash}`); console.log(`对应根路径:${volume.root}`); });
2. 从UI元素提取(快速调试用)
elFinder的侧边栏驱动器节点会携带data-volume-id属性,直接通过DOM选择器就能拿到:
// 获取第一个驱动器的哈希值 var driveHash = $('.elfinder-navbar-root').first().attr('data-volume-id');
注意:这种方法依赖UI结构,若elFinder版本更新导致DOM结构变化可能失效,适合临时调试使用。
3. 通过API事件监听获取
可以监听elFinder的初始化或目录切换事件,在回调中获取当前激活卷的哈希:
$('#elfinder').elfinder({ // 其他配置项... handlers: { // 初始化完成时触发 init: function(event, instance) { var currentVolume = instance.volume(); console.log(`初始化完成,当前驱动器哈希:${currentVolume.hash}`); }, // 切换目录时触发 open: function(event, instance) { var currentVolume = instance.volume(); console.log(`切换目录,当前驱动器哈希:${currentVolume.hash}`); } } });
最后补充
拿到驱动器哈希后,和你已转换好的pathHash组合,就能生成目标链接:http://example.com/elfinder#driveHash_pathHash
这样就能直接跳转到指定卷的特定路径啦!
内容的提问来源于stack exchange,提问作者Tarek Adam
相关产品推荐
相关产品推荐

