2017-10-17 199 views
0

我使用codeigniter,我想让elfinder的上传路径对每个id都是动态的。 我的文件夹层次结构是这样的:elfinder设置动态上传路径

client code is dynamic

我elfinder选择采用:

$idce = $_GET['id_c']; 

    $client_code = $this->db->select('client_code') 
         ->get_where('tb_clients', array('id_c' => $idce)) 
         ->row() 
         ->client_code; 
    $tval = $this->db->select('tanggal_valuasi') 
         ->get_where('tb_clients', array('id_c' => $idce)) 
         ->row() 
         ->tanggal_valuasi; 

    $opts = array(


    // 'debug' => true, 

    'roots' => array(
     array(
     'driver' => 'LocalFileSystem', 
     'path' => './upload/'.$client_code.'./proposal/', 
     'startPath' =>'./storage/'.$client_code.'./proposal/', 
     'URL' => site_url('storage').'/'.$client_code.'/'.'proposal/', 
     'attributes' => array(
      array(// hide readmes 
      'pattern' => '/.quarantine'.'/', 

      // 'read' => false, 
      // 'write' => false, 

      'hidden' => true, 

      // 'locked' => false 

     ) , 
      array(// restrict access to png files 
      'pattern' => '/.tmb'.'/', 

      // 'read' => false, 
      // 'write' => false, 

      'hidden' => true, 

      // 'locked' => false 

     ) 
     ) , 
     'uploadDeny' => array(
      'text/php', 
      'text/x-php', 
      'application/php', 
      'application/x-php', 
      'application/x-httpd-php', 
      'application/x-httpd-php-source', 
      'text/html', 
      'text/css', 
      'text/js', 
      'application/js', 
      'application/x-javascript', 
      'application/javascript', 
      'application/ecmascript', 
      'text/javascript', 
      'text/ecmascript', 
      'application/octet-stream' 
     ) , 
     'disabled' => array(
      'rename' 
     ) , 
    ) 
    ) 
); 
    $this->load->library('elfinder_lib', $opts); 
} 

,这是我的javascript调用elfinder:

<script src="<?php echo base_url('asset/elfinder/js/elfinder.full.js');?>"> 
</script> 

<!-- elFinder initialization (REQUIRED) --> 
    <script type="text/javascript" charset="utf-8"> 
    $().ready(function() { 
     var elf = $('#elfinder').elfinder({ 
      customData : {'id_c': document.getElementById('id_c').value}, 
      defaultView : 'list', 
      url : '<?= base_url(); ?>admin/proposal_contract/elfinder_init', 
    `enter code here`// connector URL (REQUIRED) 
      uiOptions: { 
       toolbar : [ 
        // toolbar configuration 
        ['back', 'forward'], 
        ['reload'], 
        ['home', 'up'], 
        ['upload'], 
        ['open'], 
        ['info'], 
        ['copy', 'cut', 'paste'], 

       ] 
      } 
     }).elfinder('instance'); 
    }); 
    </script> 

结果是elfinder显示正确的文件夹我想要哪个在'(client_code)/ proposal'文件夹下,但是当我尝试上传文件时,上传的文件没有出现在'提案'文件夹中。而是出现在根文件夹'mysite/proposal'中。所以它似乎elfinder无法读取我的动态变量是路径

回答

0

好吧,最后我可以得到这个直.. 事实证明,我只需要添加'requestType:POST',所以elfinder可以识别自定义数据。

<!-- elFinder initialization (REQUIRED) --> 
<script type="text/javascript" charset="utf-8"> 
$().ready(function() { 
    var elf = $('#elfinder').elfinder({ 
     customData : {'id_c': document.getElementById('id_c').value}, 
     defaultView : 'list', 
     requestType : post, 
     url : '<?= base_url(); ?>admin/proposal_contract/elfinder_init', 
`enter code here`// connector URL (REQUIRED) 
     uiOptions: { 
      toolbar : [ 
       // toolbar configuration 
       ['back', 'forward'], 
       ['reload'], 
       ['home', 'up'], 
       ['upload'], 
       ['open'], 
       ['info'], 
       ['copy', 'cut', 'paste'], 

      ] 
     } 
    }).elfinder('instance'); 
}); 

的AJAX请求类型。可用的选择是发布和获取。