微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Elfinder File Manager中使用JavaScript修复添加事件?

如何解决如何在Elfinder File Manager中使用JavaScript修复添加事件?

我想使用 Handlers / Add Event 和javascript在elfinder文件管理器中创建文件。我想将数据保存在db中。但是在创建新文件时,添加事件不起作用。当已有相同名称文件时,此事件将起作用。你能给我个主意吗?预先谢谢您。

if (! require.defined('elfinderConfig')) {
            define('elfinderConfig',{      
                defaultOpts : {
                    url : 'elfinder/PHP/connector.minimal.PHP',handlers : {
                        add: function(event,fm){
                            var files = event.data.added;
                            var paths = [];
                            files.forEach(function(item){                                              
                                                paths.push('C:\\**\\elfinder\\' + fm.path(item.hash,true) + '\\' + fm.path(item.name,true));
                            });
                            $.ajax({
                                url:"elfinder/PHP/savePathsToJR.PHP",type: "POST",data: {userName: userName,paths: paths},success: function(item){                                
                                }
                            });
                        },},});
    }

我们意识到问题源于connector.minimal.PHP中的访问功能。我们的代码如下。我们正在控制数据库的授权,以便允许用户查看文件。如果我们取消此功能,我们的处理程序添加事件 工作正常。因为它无法通过访问功能传递,所以它不会触发添加事件。

访问功能

function access($attr,$path,$data,$volume,$isDir,$relpath) {
    $username = $_SESSION['session_login'];
 
    $serverName = "***";
    $options = array(  "UID" => "TestUser","PWD" => "**","Database" => "**","CharacterSet"=>"UTF-8");
    $conn = sqlsrv_connect($serverName,$options);

     if( $conn === false )
     {
         echo "Could not connect.\n";
         die( print_r( sqlsrv_errors(),true));
     }


    $query = "Select permitted_file_path from USER_FILE_PATHS where username = '" . $username . "'";
    
    $stmt = sqlsrv_query( $conn,$query);  
    if($stmt === false)  
    {  
         echo "Error in query preparation/execution.\n";  
         die(print_r( sqlsrv_errors(),true));  
    }  
    
    $permittedpaths = array();  
    
    while($row = sqlsrv_fetch_array( $stmt,sqlSRV_FETCH_ASSOC))  
    {  
          array_push($permittedpaths,$row['permitted_file_path']);  
    }  
      
    sqlsrv_free_stmt($stmt);
    

    sqlsrv_close($conn);


    $compare = in_array($path,$permittedpaths) ? false : true;
    $retVal = $compare ? $compare : null;
    return $retVal;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?